Форум пользователей Visio http://visio.getbb.ru/ |
|
Правильное ограничение размеров фигуры http://visio.getbb.ru/viewtopic.php?f=5&t=1355 |
Страница 1 из 1 |
Автор: | vin [ 29 июн 2018, 16:01 ] |
Заголовок сообщения: | Правильное ограничение размеров фигуры |
Хотел поделиться опытом. Ранее в старом форуме был совет как ограничить, например, ширину минимальным значением. Было предложено так: Код: 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 из 1 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |