}

Оформление скрипта в виде процедуры. Вызов его с диска Похоже, что мы выполнили сверхзадачу и создали скрипт, создающий окно для работы с атрибутами объектов из сцены и даже умеющий сохранять и загружать обратно наиболее удачные наборы значений. Посмотрим теперь, как его лучше всего практически использовать, то есть в каком виде его лучше сохранить и вызывать.

Держать такое огромное количество строк в Script Editor, естественно, неудобно. Можно, конечно, выделить весь нужный текст в Script Editor и забросить его на полку (shelf) одним движением мыши. Однако мы поступим более традиционным способом. Оформим весь наш скрипт, рисующий окно, в виде процедуры и будем вызывать его по имени этой процедуры.

Допишите в самом начале скрипта объявление новой процедуры dropAttrWindow, а после команды showWindow DROP_WINDOW; не забудьте поставить закрывающую фигурную скобку. Не скупитесь на комментарии, которые облегчат чтение кода другим пользователям или вам самим через десять лет. Результат нашего многодневного труда выглядит следующим образом.

global proc dropAttrWindow{)

I

iff window -ex DROP_WINDOW'==1) { deleteUI DROP_WINDOW; }

window -t “drop attributes" DROP_WINDOW;

columnLayout;

frameLayout -L “push Field Attributes’’ -ell 1; columnLayout; attrFieldSliderGrp -at pushField.mag -min 0 -max 50; attrFieldSliderGrp -at pushField.att -min 0 -max 4 ; attrFieldSliderGrp -at push Field, max -min 0 -max 10 ; setParent setParent

frameLayout -I "pull Field Attributes” -ell 1; columnLayout; attrFieldSliderGrp -at pullField.mag -min -50 -max 0; attrFieldSliderGrp -at pullField.att -min 0 -max 4 ; attrFieldSliderGrp -at pullField.max -min 0 -max 10 ; setParent setParent ..;

frameLayout -I “pull Field Attributes” -ell 1; columnLayout; attrFieldSliderGrp -at drop.con -min 0 -max 1; setParent ..; setParent

separator-style “none” -h 15;

gridLayout -numberOfColumns 4 -cellWidthHeight 96 32; button -I “Reset” -w 94 -c “resetAU”; button -I "Save” -w 94 -c "saveAU”; button -I “Load” -w 94 -c “loadAtl”; button -I "Close” -w 94 -c "deleteUI DROP_WINDOW;” ; setParent

showWindow DROP_WINDOW;

} it end of dropAttrWindow procedure

lilllllllilliilllllllllliiltllllllllllHIIIIiillllilllllil global proc resetAU()

{

setAttr “pushField.magnitude” 39; setAttr “pushField.attenuation” 4; setAttr "pushField.maxDistance” 2; setAttr “pullField.magnitude” -6; setAttr “pullField.attenuation” 4; setAttr “pullField.maxDistance” 5; setAttr “dropShape.conserve” 0.9;

}

llllllllllllllliillilliiiillllllllllllllllllillliiiiiillll global proc saveAll()

{

string SfileName = 'fileDialog -dm "c:/temp/” '; int SfileNumber = 'fopen SfileName V '; fprint SfileNumber ('getAttr “pushField.magnitude" W\n”); fprint SfileNumber ('getAttr “pushField.attenuation” '+”\r\n”); fprint SfileNumber ('getAttr “pushField.maxDistance” *+”\r\n”); fprint SfileNumber ('getAttr “pullField.magnitude” '+”\r\n”); fprint SfileNumber ('getAttr “pullField.attenuation” ' +”\r\n”); fprint SfileNumber ('getAttr “pullField.maxDistance” ’+”\r\n”); fprint SfileNumber ('getAttr “dropShape.conserve” '+”\r\n”); fclose SfileNumber;


⇐ вернуться назад | | далее ⇒