Author |
Topic |
|
zhuravsky
Russia
115 Posts |
Posted - 06/29/2008 : 15:46:36
|
Функция SETATREF позволяет перенаправить ввод пользователя из секции Custom Properties в другие ячейки, например в Width. Т.е., если в Properties записать setatref(Width) то будет изменяться ширина шейпа при изменении соответствующего свойства. Вопрос такой: нельзя ли перед тем как изменится Width произвести над введенным значением кое-какие расчеты?
|
|
zhuravsky
Russia
115 Posts |
Posted - 06/29/2008 : 17:34:52
|
Небольшое дополнение: необходимо управлять геометрией шейпа одновременно двумя путями - с помощью контролов или задавая конкретные числа через Custom Properties |
|
|
Tumanov
Russia
1198 Posts |
Posted - 06/29/2008 : 17:41:11
|
Вычисления можно производить за счет второго параметра - set_expression SETATREF(reference [,set_expression [,ignore_eval]]) То есть, если написать в Custom =SETATREF(Width,SETATREFEXPR()*2,TRUE) то ширина будет равняться удвоенному введенному значению, а значение свойства будет нулевым. А как совместить и то, и другое управление, пока не понял :( Наверное что-то с If'ами... |
|
|
zhuravsky
Russia
115 Posts |
Posted - 06/30/2008 : 18:36:17
|
На самом деле, в секции Control есть ячейка XDynamics и туда, в приципе, можно записать setf(getref(width), ...), и это будет работать, но как только width будет изменено через custom properties, контролы окажутся в неверном положении. Вот если бы здесь было решение... |
|
|
zhuravsky
Russia
115 Posts |
Posted - 07/01/2008 : 18:16:39
|
Пока получилось вот как. Сделал user-defined variable: w3d В контроле XDyn записал так:
SETF(GetRef(User.w3d),Controls.XX)
В properties записал так:
SETATREF(User.w3d,SETATREF(Controls.XX))
Теперь user.w3d меняется как от пропертис, так и от контрола, изменения взаимно отслеживаются.
|
|
|
Tumanov
Russia
1198 Posts |
|
zhuravsky
Russia
115 Posts |
Posted - 07/24/2008 : 10:10:30
|
В присланном примере реализовано несколько способов управления псевдо-трехмерным параллелипипедом: через свойства, контролы и комбинированно. При комбинированном способе изменения в положении контролов автоматически изменяют соответствующие свойства и наоборот. Также реализовано управление видимостью граней, что позволяет получить некое подобие ящика вместо параллелипипеда.
Применение такого шейпа может быть разнообразным, например, можно рисовать мебель, компоновку электротехнических шкафов, схемы расположения оборудования и т.п. Нужно только добавить еще несколько шейпов (цилиндр, конус, пирамида ...)
|
Edited by - zhuravsky on 07/24/2008 10:16:20 |
|
|
ESV
Ukraine
21 Posts |
Posted - 08/17/2008 : 18:54:30
|
quote: Originally posted by zhuravsky Вопрос такой: нельзя ли перед тем как изменится Width произвести над введенным значением кое-какие расчеты?
Легко. Синтаксис формулы таков:
SATATREF([ссылка перенаправления],SATATREFEVAL([вычисления над SATATREFEXPR()])){выражение}
Собственно SATATREFEXPR() представляет введенное с помощью пользовательского интерфейса значение.
Пример из хелпа: Следующая формула записывается в ячейку PinX шейпа Sheet.2, находящегося на одном уровне вложения с шейпом Sheet.1:
=SETATREF(User.DeltaX, SETATREFEVAL(SETATREFEXPR() - Sheet.1!PinX)) + Sheet.1!PinX
Соответственно у шейпа Sheet.1 существует ячейка User.DeltaX в которой хранится численное значение смещения координаты X шейпа Sheet.2 относительно координаты X шейпа Sheet.1.
Теперь механика: При перетаскивании шейпа Sheet.1, новое значение координаты X подставляется замест SATATREFEXPR(). Далее происходит вычитание из нового значения X-ой координаты Sheet.1 (SETATREFEXPR() - Sheet.1!PinX). Полученная разница передается по перенаправлению в ячейку User.DeltaX шейпа Sheet.1. Новое значение User.DeltaX подставляестся замест функции SATATREF в формуле. Далее к полученному значению функции SATATREF прибавляется значение X-ой координаты шейпа Sheet.1. Итоговая сумма используется в качестве значения X-ой координаты шейпа Sheet.2.
Итого: Перетаскивание шейпа Sheet.2 по оси X приводит к изменению смещения записанного в ячейке User.DeltaX шейпа Sheet.1. Последний при перетаскивании, автоматически тянет за собой Sheet.2. |
Edited by - ESV on 08/17/2008 19:01:28 |
|
|
|
Topic |
|