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

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

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


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


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

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



Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: Правильное ограничение размеров фигуры
СообщениеДобавлено: 29 июн 2018, 16:01 
Не в сети
Бывалый

Зарегистрирован: 19 июн 2015, 22:18
Сообщений: 114
Использую Visio c: 2013
Очков репутации: 21

Добавить очки репутацииУменьшить очки репутации
Хотел поделиться опытом.
Ранее в старом форуме был совет как ограничить, например, ширину минимальным значением. Было предложено так:
Код:
LocPinX=GUARD(IF(Width<20 mm,Width*0.5+SETF("Width",20 mm),Width*0.5))

здесь сделан трюк, чтобы не вводить секцию user. Ссылка на ячейку Width есть, но на PinX она влияние не оказывает.

Можно без трюка (чтобы было понятней) ввести секцию User и просто добавить формулу:
Код:
IF(Width<20 mm, SETF("Width",20 mm), 0)

Visio видит, что наша ячейка зависит от Width - начинает пересчитывать ячейку при изменении Width и,
при уменьшении менее 20 mm, SETF устанавливает значение 20 mm.

Проблема при таком ограничении в том, что если мы начинаем менять размер левым маркером, то фигура начинает уезжать влево.
Такая же ситуация с ограничением размера по высоте. Если мы будем изменять размер снизу - фигура будет уезжать вниз.

Наконец-то я нашел как победить эту проблему!
Для этого я использую SETATREF

В секции User завожу две строки:
Код:
User.DeltaX = 80 mm
User.MinWidth= 20 mm

В Width пишу:
Код:
Width =SETATREF(User.DeltaX, SETATREFEVAL( IF( SETATREFEXPR()<User.MinWidth, User.MinWidth, SETATREFEXPR())))

При изменении Width - изменения направляются в ячейку User.DeltaX.
SETATREFEVAL - пересчитывает значения, которые будут использованы как Width.
При этом SETATREFEXPR() выступает как текущее значение.

При таком подходе фигура больше не "улетает".


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

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



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

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


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

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