Коллбэк, следящий за окном загрузки файла UVW координат с автоматическим внесением имени объекта в текстовое поле. dialogMonitorOps.getWindowHandle() используется для получения дескрипторов открывающихся окон в процессе выполнения скрипта. И работает эта функция непосредственно под управлением коллбэка.
http://www.scriptspot.com/3ds-max/scripts/load-uvw-channel-map
ещё ссылка: http://www.scriptspot.com/forums/3ds-max/general-scripting/press-ok-btn-after-copying-an-object-with-shift
_______________________________________________________________
Radiobuttons
try DestroyDialog unnamedRollout catch() --пробовать закрыть Rollout, или ничего
rollout unnamedRollout "Untitled" width:160 height:70
(
button btn "Caption" width:40 hight:20 align: #center -- кнопка
radiobuttons ‘rBtn1’ “” labels:#("r1","r2","r3","r4") columns:2 default:1 -- radiobuttons с названием, массивом переключателей, количеством столбцов (columns) и значение по умолчанию
on btn pressed do (print rBtn1.state as string) -- Если нажать кнопку btn, то печатать значение счётчика радиокнопки rBtn1
fn updateButton_fn=(
btn.text=case rBtn1.state of
(
1: "r1"
2: "r2"
3: "r3"
4: "r4"
)
) -- функция обновления текста, в которой используется значение счётчика состояния радиокнопок. Если положение радиокнопок 1, то простой кнопке btn присваивается текст "r1" и т.п.
on rBtn1 changed state do updateButton_fn() -- вызов выше объявленной функции, если состояние (state) радиокнопок (rBtn1) меняется (changed), тогда делать: вызвать функцию updateButton_fn()
)
CreateDialog unnamedRollout -- создать диалог сформированного выше роллаута
|
|
_______________________________________________________________
Конвертация текста в число и выполнение текста как кода
execute "3.14"
или
"3.14" as float
3.14
execute "a=(for i=1 to 5 collect i)"
#(1, 2, 3, 4, 5)
_______________________________________________________________
Заставим кнопку нажаться автоматически без использования функций
try DestroyDialog unnamedRollout catch() --пробовать закрыть Rollout, или ничего..
rollout unnamedRollout "Untitled" width:154 height:57
(
spinner spn1 "" pos:[23,9] width:92 height:16
button btn1 "tmp" pos:[23,30] width:30 height:20
on btn1 pressed do print "Z" -- печатать “Z”
on spn1 changed arg do (-- при изменении значения спиннера arg делать
print (spn1.value as String) -- печатать значение спиннера как текст
btn1.pressed() -- совершается действеи нажатия кнопки btn1
)
)
CreateDialog unnamedRollout
Ещё, к слову о свитках Rollout, если в ветвлении кода присутствуют в разных местах вызовы закрытия окна роллаута и оно не закрывается, то надо объявить роллаут как глобальную переменную. То же самое относится и к функциям.
_______________________________________________________________
Интерактивность спиннера
global tmp=0 -- декларируется временная переменная tmp
try DestroyDialog unnamedRollout catch() -- пробуем [try] закрыть диалоговое окно unnamedRollout (если оно есть), иначе ничего не делать [catch()]
rollout unnamedRollout "Untitled" width:160 height:70
(
CreateDialog unnamedRolloutspinner spn "Caption" range: [0,100,0] pos: [2,2]
on spn button up do print "hello world!" -- после отпускания кнопки спиннера spn делать…
on spn changed arg do tmp=arg - при каждом изменении значения спиннера делать переменную tmp равной значению спиннера.
)
|
|
_______________________________________________________________