Хотел поделиться опытом.
Ранее в старом форуме
был совет как ограничить, например, ширину минимальным значением. Было предложено так:
Код:
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() выступает как текущее значение.
При таком подходе фигура больше не "улетает".