DialogMonitorOps.getWindowHandle()

Коллбэк, следящий за окном загрузки файла 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 равной значению спиннера.
)

_______________________________________________________________









Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: