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

Форум по вопросам применения и программирования в Visio
Текущее время: 26 май 2017, 20:47

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


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


Размещение файлов в формате vsd (а не vsdx/vsdm), увеличивает вероятность ответа стремительным домкратом !!!

Для корректного отображения названий вложенных файлов название должно быть написано латиницей!



Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Изменение размера фигуры в группе
СообщениеДобавлено: 14 июн 2013, 19:50 
Не в сети
Ветеран

Зарегистрирован: 06 май 2013, 13:01
Сообщений: 746
Откуда: Россия
Использую Visio c: 2013
Очков репутации: 18

Добавить очки репутацииУменьшить очки репутации
Можно ли сделать, чтобы при изменении размера фигуры внутри группы, она получала числовые значения размера, а не пропорциональные соответствующему размеру группы?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Изменение размера фигуры в группе
СообщениеДобавлено: 14 июн 2013, 21:59 
Не в сети
Ветеран

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

Добавить очки репутацииУменьшить очки репутации
если это надо, чтобы фигура не меняла размеры при изменении размеров группы, то можно просто ставить свойство в меню "поведение":

Изображение

это в визио 2003 англ. как в более новых не знаю, но наверно примерно так же.

можно после добавления в группу вручную или макросом задавать реальные размеры например так:
shape.cells("width").formula=shape.cells("width").result("mm") & " mm"
это всё повесить на событие группировки например, чтоб само делалось.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Изменение размера фигуры в группе
СообщениеДобавлено: 14 июн 2013, 22:26 
Не в сети
Ветеран

Зарегистрирован: 06 май 2013, 13:01
Сообщений: 746
Откуда: Россия
Использую Visio c: 2013
Очков репутации: 18

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

Эм.. Нет, надо чтобы при изменении размеров фигуры в группе пользователем она получала численное значение, а не значение, пропорциональное размеру группы. Это надо для того, чтобы не возникало побочных эффектов от циклической связи размеров группы и фигуры. У меня размер группы вычисляется автоматически на основе входящих в неё фигур.
Параметр в ПН проверю, может и поможет...

9rey писал(а):
можно после добавления в группу вручную или макросом задавать реальные размеры

После добавления у меня всё делается как надо. Эта сгруппированная штука становится трафаретом и мне бы хотелось, чтобы никакой программный код не требовался для его использования.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Изменение размера фигуры в группе
СообщениеДобавлено: 15 июн 2013, 08:24 
Не в сети
Ветеран

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

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Изменение размера фигуры в группе
СообщениеДобавлено: 15 июн 2013, 16:46 
Не в сети
Ветеран

Зарегистрирован: 06 май 2013, 13:01
Сообщений: 746
Откуда: Россия
Использую Visio c: 2013
Очков репутации: 18

Добавить очки репутацииУменьшить очки репутации
9rey писал(а):
если ты задашь числовое значение (а это видимо можно сделать либо руками, либо кодом, причем разово)

Оно и есть числовое.

9rey писал(а):
то фигура перестанет масштабироваться вместе с группой

На размер группы у меня и так стоит формула и GUARD.

9rey писал(а):
вот мне и интересно, зачем это все?

Если выделить фигуру в группе и мышкой поменять её размер, то визио поставит этот размер пропорционально размеру группы.
После этого группа пересчитывает свой размер по формуле, что приводит к следующему резайзу фигуры и в итоге полная фигня с огромными размерами.
Как с этим бороться?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Изменение размера фигуры в группе
СообщениеДобавлено: 15 июн 2013, 17:17 
Не в сети
Ветеран

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

Добавить очки репутацииУменьшить очки репутации
никак. подстраиваться под правила визио и менять свой подход


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Изменение размера фигуры в группе
СообщениеДобавлено: 15 июн 2013, 17:54 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3250
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
Если таких шейпов в группе немного можно решить в шейпшите так. Например есть группа в ее составе есть sheet.4. В групповой шейп в секцию юзер
user.d = width * k
добавить где k коэффициент. В секцию events fx добавить формулу.
=setf("sheet.4!width",user.d)
Это заменит размеры дочернего шейпа на значения


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Изменение размера фигуры в группе
СообщениеДобавлено: 15 июн 2013, 18:05 
Не в сети
Ветеран

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

Добавить очки репутацииУменьшить очки репутации
кстати если ячейку ResizeMode сделать =1 то при масштабировании фигуры в группе, ее размеры будут числовыми и отвяжутся от группы, только что проверил


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Изменение размера фигуры в группе
СообщениеДобавлено: 17 июн 2013, 15:25 
Не в сети
Ветеран

Зарегистрирован: 06 май 2013, 13:01
Сообщений: 746
Откуда: Россия
Использую Visio c: 2013
Очков репутации: 18

Добавить очки репутацииУменьшить очки репутации
Qwertiy писал(а):
9rey писал(а):
если это надо, чтобы фигура не меняла размеры при изменении размеров группы
Параметр в ПН проверю, может и поможет...

9rey писал(а):
кстати если ячейку ResizeMode сделать =1 то при масштабировании фигуры в группе, ее размеры будут числовыми и отвяжутся от группы, только что проверил

Да, всё получилось так как и было нужно, спасибо :)


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Изменение размера фигуры в группе
СообщениеДобавлено: 17 июн 2013, 16:08 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3250
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
где хоть это ResizeMod находится ?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Изменение размера фигуры в группе
СообщениеДобавлено: 17 июн 2013, 16:58 
Не в сети
Ветеран

Зарегистрирован: 06 май 2013, 13:01
Сообщений: 746
Откуда: Россия
Использую Visio c: 2013
Очков репутации: 18

Добавить очки репутацииУменьшить очки репутации
Surrogate писал(а):
где хоть это ResizeMod находится ?

Руками: Developer -> Behavior -> Behavior -> Resize Behavior -> Reposition only.
Программно: .CellsSRC(visSectionObject, visRowXFormOut, visXFormResizeMode).FormulaU = "1"


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Изменение размера фигуры в группе
СообщениеДобавлено: 14 апр 2017, 12:28 
Не в сети

Зарегистрирован: 07 апр 2017, 11:18
Сообщений: 11
Использую Visio c: 2010
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Попробовал в своём случае устанавливать ResizeMode, но действия никакого не возымело. Возможно что-то не понял по обсуждению выше. Надеюсь, что здесь проясню все моменты.
  1. Есть группа объектов:
    Изображение
    При изменении размеров стрелочки не становятся не пропорциональными:
    ИзображениеИзображение
    Пробовал Hieght=GUARD(35 pt) и Width=GUARD(Hieght), но видимо не то, потому как не помогло.
  2. Есть ли различие между смартшейпом и группой объектов? Или это одно и то же?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Изменение размера фигуры в группе
СообщениеДобавлено: 14 апр 2017, 12:51 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3250
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
LuxCore писал(а):
  • Есть ли различие между смартшейпом и группой объектов? Или это одно и то же?
нет, не одно и тоже.
Групповой объект получается путем объединения нескольких фигур в новую сущность. Создавать группы можно если на включена лента Разработчик на ленте.
А смарт-шейп - это фигура с интерактивным поведением. Это поведение может изменяться по событиям (двойной клик, дроп, изменение размеров/координат, изменение текста шейпа), по определенным значениям различных свойств (с очень гибкими возможностями настройки).
Смарт-шейпом может быть и одиночный шейп и групповой шейп
почитать про смартшейпы можно здесь:
Методы создания интерактивных объектов.
SmartShape Tutorial: Fading Trees
LuxCore писал(а):
При изменении размеров стрелочки не становятся не пропорциональными
а какие стрелки используются ?
Штатный набор из 45 штук. Можно рисовать и добавлять свои (пользовательские).
Изображение
В режиме без масштабирования в качестве опоры берется основная линия (та, к которой крепится наконечник). Расчеты ведутся от ее толщины. Сильно влияет также переключатель размеров. Размеры образца практически не принимаются во внимание.
В режиме с масштабированием отсчет начинается от размеров образца. И этот размер сохраняется постоянным во всех образованных от него экземплярах. Свои наборы можно делать как с масштабированием, так и без него.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Изменение размера фигуры в группе
СообщениеДобавлено: 14 апр 2017, 13:07 
Не в сети

Зарегистрирован: 07 апр 2017, 11:18
Сообщений: 11
Использую Visio c: 2010
Очков репутации: 0

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

Забыл файлик приложить. Мои лично нарисованные стрелочки использую (две дуги и две линии)


Вложения:
VButton.vsd [30 Кб]
Скачиваний: 15
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Изменение размера фигуры в группе
СообщениеДобавлено: 14 апр 2017, 13:32 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 28 апр 2013, 14:03
Сообщений: 445
Откуда: Вена, Австрия
Использую Visio c: 1998
Очков репутации: 100599

Добавить очки репутацииУменьшить очки репутации
LuxCore писал(а):
Попробовал в своём случае устанавливать ResizeMode, но действия никакого не возымело
Есть ли различие между смартшейпом и группой объектов? Или это одно и то же?

Чтобы запретить шейпу "деформироваться", достаточно явно это указать (работать должно как для составного шейпа, так и для группы):
Shape -> Protection -> Aspect Ratio = Yes

Можно сделать и через Resize Mode и формулы Shape Sheet, но это будет намного хитрее,
и скорее всего это будет никому кроме гиков не нужно :)

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

Она есть. В группе у каждого элемента (вложенного шейпа), входящего в нее, могут быть свои настройки толщины линий, текста, заливки, цвета, и т.п. а у "составного" шейпа эти настройки общие для всех элементов, в него входящих (общие для всех "геометрий"). К "интерактивности" или "умности" эта разница IMHO не особо относится :)

Чтобы получить один составной шейп вместо группы нужно объединить эту самую группу,
Shape -> Operations -> Join (или Combine)
Получится 1 шейп с несколькими геометриями (составной) вместо иерархии вложенных шейпов.

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

Изображение


Последний раз редактировалось nbelyh 14 апр 2017, 14:12, всего редактировалось 1 раз.

Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Изменение размера фигуры в группе
СообщениеДобавлено: 14 апр 2017, 14:11 
Не в сети

Зарегистрирован: 07 апр 2017, 11:18
Сообщений: 11
Использую Visio c: 2010
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Ситуация вроде проясняется, но не до конца, потому как есть ещё вопрос, перекликающийся с темой создания смартшейпов.
Хочу сделать смартшейп "Button". В приложенном файле (предыдущее сообщение моё) есть группа:
Изображение

Для неё в ShapeSheet задал пользовательские ячейки и Actions:
Изображение
Не могу понять, как сделать невидимыми нужные фигуру и соответствующий текст. Подскажите, пожалуйста, что дальше делать. Спасибо


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

Зарегистрирован: 28 апр 2013, 14:03
Сообщений: 445
Откуда: Вена, Австрия
Использую Visio c: 1998
Очков репутации: 100599

Добавить очки репутацииУменьшить очки репутации
Если это диаграмма (рисунок), просто создай 2 кнопки, одна "Update" другая "Run"
Сэкономишь кучу времени.

Если ты хочешь, чтобы они таки нажимались (?), то это значит что у тебя есть какой-то код (VBA-макросы или что-то еще)
Тогда проще через код сделать (так же 2 кнопки, ставить им .Visible в зависимости от того какая должна быть видна)

Можно сделать чисто на формулах, через контекстное меню, но в Visio это будет к сожалению нетривиально.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Изменение размера фигуры в группе
СообщениеДобавлено: 14 апр 2017, 15:08 
Не в сети

Зарегистрирован: 07 апр 2017, 11:18
Сообщений: 11
Использую Visio c: 2010
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
nbelyh писал(а):
Если ты хочешь, чтобы они таки нажимались (?), то это значит что у тебя есть какой-то код (VBA-макросы или что-то еще)
Нет, нажиматься мне не нужно. Просто смартшейп-кнопка, который будет меняться в зависимости от состояния: цвет, иконка-фигура и текст.
nbelyh писал(а):
Можно сделать чисто на формулах
Ага, вот это я и пытался сварганить в ShapeSheet. Но знаний мало. Actions, которые я сделал, не работают. Подозреваю потому, что нет связи между ячейками User.Update/User.Run и соответствующими иконками-фигурами (стрелочки и треугольник).
Думал, что можно обойтись без VBA. VBA мне нравится, но пока смысла не вижу в нём, потому что нужно со смартшейпами без него разобраться.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Изменение размера фигуры в группе
СообщениеДобавлено: 14 апр 2017, 15:10 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3250
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
LuxCore писал(а):
Actions, которые я сделал, не работают
0. в проводнике объекта присвоил всем составляющим фигурам осмысленные имена
Изображение
1. эти две кнопки взаимоисключающие. значит можно обойтись одной строкой в Actions и в User-defined cells
Изображение
если в ячейке user.state - 1 то состояние Run, иначе Update
2. внутри самой группы кнопки. я сначала разобрался с видимостью надписей
Изображение
Изображение
3. а потом настроил видимость фигур в соответствии с видимостью надписи
Изображение


Вложения:
VButton_V2.vsd [21 Кб]
Скачиваний: 14
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Изменение размера фигуры в группе
СообщениеДобавлено: 14 апр 2017, 23:52 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 28 апр 2013, 14:03
Сообщений: 445
Откуда: Вена, Австрия
Использую Visio c: 1998
Очков репутации: 100599

Добавить очки репутацииУменьшить очки репутации
LuxCore писал(а):
Ага, вот это я и пытался сварганить в ShapeSheet.
Думал, что можно обойтись без VBA. VBA мне нравится, но пока смысла не вижу в нём, потому что нужно со смартшейпами без него разобраться.

Можно обойтись без VBA, но это путь самурая :)

План:
- Делаем из твоей кучи шейпов 3 шейпа: (кнопка - группа с границами), (стрелки с текстом), и (треугольник с текстом).
- Делаем группу (прямоугольник)
- В группе определяем действия, и 1 ячейку которая будет содержать текущий тип кнопки. Я предлагаю как строчку.
Это даст возможность добавлять новые варианты без глобальной переделки (например, "Стоп"). Пусть это будет User.ActionType
Лучше такие служебные штуки определять в User., а не в Prop. потому что Prop виден юзеру, и может использоваться для привязки к данным (чтобы он там не болтался)
- Стрелки конвертируем в 1 шейп
- Добавляем стрелки и треугольник в группу (не группируем - добавляем в группу. Это разные операции).
- Доававляем текст к стрелкам и треугольнику, устанавливаем правильное положение текста.
- Настраиваем поведение (показывать - прятать). В ячейки которые контролируют видимость (NoShow / HideText) прописываем зависимость от группы (User.ActionType)
- Подправляем и координаты Width/Height. Чтобы при растягивании и сжимании не происходило ничего странного, лучше брать координаты родителя (группы)
- Подправляем масштабирование шрифта.
- Настраиваем поведение группы (блокируем выбор суб-шейпов)

У меня заняло примерно полчаса возни (пример приаттачен).
В общем что я хотел сказать - изготовление нормальных "умных" шейпов в Visio в общем случае оказывается довольно трудоемким процессом.
Если можно этого избежать - лучше избежать.

Возможные проблемы - это в качестве домашнего задания :D
- Проверить что заливка как надо работает (если ты захочешь перекрасить кнопку). Если нет - починить (с помощью GUARD и NoFill / FillFgnd например)
- Проверить что темы нормально работают (если ты захочешь использовать этот шейп с встроенным шаблоном). Если нет - починить (с помощью THEMEGUARD например)
- Проверить что работает выравнивание текста (справа - слева - по центру). Если нет - починить.
- Сделать чтобы толщина линий окантовки кружка/треугольника менялась от размера.


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

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



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

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


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

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