Форум пользователей Visio http://visio.getbb.ru/ |
|
Изменение размера фигуры в группе http://visio.getbb.ru/viewtopic.php?f=3&t=385 |
Страница 1 из 2 |
Автор: | Qwertiy [ 14 июн 2013, 19:50 ] |
Заголовок сообщения: | Изменение размера фигуры в группе |
Можно ли сделать, чтобы при изменении размера фигуры внутри группы, она получала числовые значения размера, а не пропорциональные соответствующему размеру группы? |
Автор: | 9rey [ 14 июн 2013, 21:59 ] |
Заголовок сообщения: | Re: Изменение размера фигуры в группе |
если это надо, чтобы фигура не меняла размеры при изменении размеров группы, то можно просто ставить свойство в меню "поведение": это в визио 2003 англ. как в более новых не знаю, но наверно примерно так же. можно после добавления в группу вручную или макросом задавать реальные размеры например так: shape.cells("width").formula=shape.cells("width").result("mm") & " mm" это всё повесить на событие группировки например, чтоб само делалось. |
Автор: | Qwertiy [ 14 июн 2013, 22:26 ] |
Заголовок сообщения: | Re: Изменение размера фигуры в группе |
9rey писал(а): если это надо, чтобы фигура не меняла размеры при изменении размеров группы Эм.. Нет, надо чтобы при изменении размеров фигуры в группе пользователем она получала численное значение, а не значение, пропорциональное размеру группы. Это надо для того, чтобы не возникало побочных эффектов от циклической связи размеров группы и фигуры. У меня размер группы вычисляется автоматически на основе входящих в неё фигур. Параметр в ПН проверю, может и поможет... 9rey писал(а): можно после добавления в группу вручную или макросом задавать реальные размеры После добавления у меня всё делается как надо. Эта сгруппированная штука становится трафаретом и мне бы хотелось, чтобы никакой программный код не требовался для его использования. |
Автор: | 9rey [ 15 июн 2013, 08:24 ] |
Заголовок сообщения: | Re: Изменение размера фигуры в группе |
если ты задашь числовое значение (а это видимо можно сделать либо руками, либо кодом, причем разово), то фигура перестанет масштабироваться вместе с группой - это все чего ты добъешься, других эффектов нет. размер группы и так расчитывается автоматически на основании входящих в нее фигур. вот мне и интересно, зачем это все? видимо надо видеть сам пример, чтоб понять, как помочь |
Автор: | Qwertiy [ 15 июн 2013, 16:46 ] |
Заголовок сообщения: | Re: Изменение размера фигуры в группе |
9rey писал(а): если ты задашь числовое значение (а это видимо можно сделать либо руками, либо кодом, причем разово) Оно и есть числовое. 9rey писал(а): то фигура перестанет масштабироваться вместе с группой На размер группы у меня и так стоит формула и GUARD. 9rey писал(а): вот мне и интересно, зачем это все? Если выделить фигуру в группе и мышкой поменять её размер, то визио поставит этот размер пропорционально размеру группы. После этого группа пересчитывает свой размер по формуле, что приводит к следующему резайзу фигуры и в итоге полная фигня с огромными размерами. Как с этим бороться? |
Автор: | 9rey [ 15 июн 2013, 17:17 ] |
Заголовок сообщения: | Re: Изменение размера фигуры в группе |
никак. подстраиваться под правила визио и менять свой подход |
Автор: | Surrogate [ 15 июн 2013, 17:54 ] |
Заголовок сообщения: | Re: Изменение размера фигуры в группе |
Если таких шейпов в группе немного можно решить в шейпшите так. Например есть группа в ее составе есть sheet.4. В групповой шейп в секцию юзер user.d = width * k добавить где k коэффициент. В секцию events fx добавить формулу. =setf("sheet.4!width",user.d) Это заменит размеры дочернего шейпа на значения |
Автор: | 9rey [ 15 июн 2013, 18:05 ] |
Заголовок сообщения: | Re: Изменение размера фигуры в группе |
кстати если ячейку ResizeMode сделать =1 то при масштабировании фигуры в группе, ее размеры будут числовыми и отвяжутся от группы, только что проверил |
Автор: | Qwertiy [ 17 июн 2013, 15:25 ] |
Заголовок сообщения: | Re: Изменение размера фигуры в группе |
Qwertiy писал(а): 9rey писал(а): если это надо, чтобы фигура не меняла размеры при изменении размеров группы Параметр в ПН проверю, может и поможет...9rey писал(а): кстати если ячейку ResizeMode сделать =1 то при масштабировании фигуры в группе, ее размеры будут числовыми и отвяжутся от группы, только что проверил Да, всё получилось так как и было нужно, спасибо |
Автор: | Surrogate [ 17 июн 2013, 16:08 ] |
Заголовок сообщения: | Re: Изменение размера фигуры в группе |
где хоть это ResizeMod находится ? |
Автор: | Qwertiy [ 17 июн 2013, 16:58 ] |
Заголовок сообщения: | Re: Изменение размера фигуры в группе |
Surrogate писал(а): где хоть это ResizeMod находится ? Руками: Developer -> Behavior -> Behavior -> Resize Behavior -> Reposition only. Программно: .CellsSRC(visSectionObject, visRowXFormOut, visXFormResizeMode).FormulaU = "1"
|
Автор: | LuxCore [ 14 апр 2017, 12:28 ] |
Заголовок сообщения: | Re: Изменение размера фигуры в группе |
Попробовал в своём случае устанавливать ResizeMode, но действия никакого не возымело. Возможно что-то не понял по обсуждению выше. Надеюсь, что здесь проясню все моменты. |
Автор: | Surrogate [ 14 апр 2017, 12:51 ] |
Заголовок сообщения: | Re: Изменение размера фигуры в группе |
LuxCore писал(а):
Групповой объект получается путем объединения нескольких фигур в новую сущность. Создавать группы можно если на включена лента Разработчик на ленте. А смарт-шейп - это фигура с интерактивным поведением. Это поведение может изменяться по событиям (двойной клик, дроп, изменение размеров/координат, изменение текста шейпа), по определенным значениям различных свойств (с очень гибкими возможностями настройки). Смарт-шейпом может быть и одиночный шейп и групповой шейп почитать про смартшейпы можно здесь: Методы создания интерактивных объектов. SmartShape Tutorial: Fading Trees LuxCore писал(а): При изменении размеров стрелочки не становятся не пропорциональными а какие стрелки используются ?Tumanov в записи блога Памятка по наконечникам Visio Line ends писал(а): Штатный набор из 45 штук. Можно рисовать и добавлять свои (пользовательские).
В режиме без масштабирования в качестве опоры берется основная линия (та, к которой крепится наконечник). Расчеты ведутся от ее толщины. Сильно влияет также переключатель размеров. Размеры образца практически не принимаются во внимание. В режиме с масштабированием отсчет начинается от размеров образца. И этот размер сохраняется постоянным во всех образованных от него экземплярах. Свои наборы можно делать как с масштабированием, так и без него. |
Автор: | LuxCore [ 14 апр 2017, 13:07 ] | ||
Заголовок сообщения: | Re: Изменение размера фигуры в группе | ||
Surrogate писал(а): а какие стрелки используются ? Забыл файлик приложить. Мои лично нарисованные стрелочки использую (две дуги и две линии)
|
Автор: | LuxCore [ 14 апр 2017, 14:11 ] |
Заголовок сообщения: | Re: Изменение размера фигуры в группе |
Ситуация вроде проясняется, но не до конца, потому как есть ещё вопрос, перекликающийся с темой создания смартшейпов. Хочу сделать смартшейп "Button". В приложенном файле (предыдущее сообщение моё) есть группа: Для неё в ShapeSheet задал пользовательские ячейки и Actions: Не могу понять, как сделать невидимыми нужные фигуру и соответствующий текст. Подскажите, пожалуйста, что дальше делать. Спасибо |
Автор: | nbelyh [ 14 апр 2017, 14:23 ] |
Заголовок сообщения: | Re: Изменение размера фигуры в группе |
Если это диаграмма (рисунок), просто создай 2 кнопки, одна "Update" другая "Run" Сэкономишь кучу времени. Если ты хочешь, чтобы они таки нажимались (?), то это значит что у тебя есть какой-то код (VBA-макросы или что-то еще) Тогда проще через код сделать (так же 2 кнопки, ставить им .Visible в зависимости от того какая должна быть видна) Можно сделать чисто на формулах, через контекстное меню, но в Visio это будет к сожалению нетривиально. |
Автор: | LuxCore [ 14 апр 2017, 15:08 ] |
Заголовок сообщения: | Re: Изменение размера фигуры в группе |
nbelyh писал(а): Если ты хочешь, чтобы они таки нажимались (?), то это значит что у тебя есть какой-то код (VBA-макросы или что-то еще) Нет, нажиматься мне не нужно. Просто смартшейп-кнопка, который будет меняться в зависимости от состояния: цвет, иконка-фигура и текст.nbelyh писал(а): Можно сделать чисто на формулах Ага, вот это я и пытался сварганить в ShapeSheet. Но знаний мало. Actions, которые я сделал, не работают. Подозреваю потому, что нет связи между ячейками User.Update/User.Run и соответствующими иконками-фигурами (стрелочки и треугольник).Думал, что можно обойтись без VBA. VBA мне нравится, но пока смысла не вижу в нём, потому что нужно со смартшейпами без него разобраться. |
Автор: | Surrogate [ 14 апр 2017, 15:10 ] | ||
Заголовок сообщения: | Re: Изменение размера фигуры в группе | ||
LuxCore писал(а): Actions, которые я сделал, не работают 0. в проводнике объекта присвоил всем составляющим фигурам осмысленные имена1. эти две кнопки взаимоисключающие. значит можно обойтись одной строкой в Actions и в User-defined cells если в ячейке user.state - 1 то состояние Run, иначе Update 2. внутри самой группы кнопки. я сначала разобрался с видимостью надписей 3. а потом настроил видимость фигур в соответствии с видимостью надписи
|
Автор: | nbelyh [ 14 апр 2017, 23:52 ] | ||
Заголовок сообщения: | Re: Изменение размера фигуры в группе | ||
LuxCore писал(а): Ага, вот это я и пытался сварганить в ShapeSheet. Думал, что можно обойтись без VBA. VBA мне нравится, но пока смысла не вижу в нём, потому что нужно со смартшейпами без него разобраться. Можно обойтись без VBA, но это путь самурая План: - Делаем из твоей кучи шейпов 3 шейпа: (кнопка - группа с границами), (стрелки с текстом), и (треугольник с текстом). - Делаем группу (прямоугольник) - В группе определяем действия, и 1 ячейку которая будет содержать текущий тип кнопки. Я предлагаю как строчку. Это даст возможность добавлять новые варианты без глобальной переделки (например, "Стоп"). Пусть это будет User.ActionType Лучше такие служебные штуки определять в User., а не в Prop. потому что Prop виден юзеру, и может использоваться для привязки к данным (чтобы он там не болтался) - Стрелки конвертируем в 1 шейп - Добавляем стрелки и треугольник в группу (не группируем - добавляем в группу. Это разные операции). - Доававляем текст к стрелкам и треугольнику, устанавливаем правильное положение текста. - Настраиваем поведение (показывать - прятать). В ячейки которые контролируют видимость (NoShow / HideText) прописываем зависимость от группы (User.ActionType) - Подправляем и координаты Width/Height. Чтобы при растягивании и сжимании не происходило ничего странного, лучше брать координаты родителя (группы) - Подправляем масштабирование шрифта. - Настраиваем поведение группы (блокируем выбор суб-шейпов) У меня заняло примерно полчаса возни (пример приаттачен). В общем что я хотел сказать - изготовление нормальных "умных" шейпов в Visio в общем случае оказывается довольно трудоемким процессом. Если можно этого избежать - лучше избежать. Возможные проблемы - это в качестве домашнего задания - Проверить что заливка как надо работает (если ты захочешь перекрасить кнопку). Если нет - починить (с помощью GUARD и NoFill / FillFgnd например) - Проверить что темы нормально работают (если ты захочешь использовать этот шейп с встроенным шаблоном). Если нет - починить (с помощью THEMEGUARD например) - Проверить что работает выравнивание текста (справа - слева - по центру). Если нет - починить. - Сделать чтобы толщина линий окантовки кружка/треугольника менялась от размера.
|
Страница 1 из 2 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |