Объявление и вызов процедур
Назначение кнопки Reset - это, очевидно, возвращение значений всех атрибутов, перечисленных в окне к значениям по умолчанию, которые мы сами и определим. Сделать это несложно, просто выполнив семь команд setAttr. Но для того, чтобы вызвать их одним махом, удобно объединить их в процедуру.
Добавьте к кнопке Reset вызов некоторой команды resetALL, а в самый низ скрипта добавьте следующие строки:
gridLayout -numberOfColumns 4 -cellWidthHeight 96 32; button -I “Reset” -w 94 -c "resetAU”; button -I “Save” -w 94; button -I "Load” -w 94;
button -I “Close” -w 94 -c “deleteUI DROP.WINDOW;” ; setParent
showWindow DROP_WINDOW; 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;
}
Выделив и выполнив весь скрипт, вы теперь можете смело «портить» значения всех атрибутов в окне, а затем нажать кнопку Reset и убедиться, что все атрибуты вернулись к исходным значениям.
Запоздалый совет. Чтобы не набивать вручную семь команд setAttr можно просто забить значения атрибутов в нашем окне, а потом посмотреть, что МАУА написала в Script Editor.
Конструкция global proc resetAU()
{
} '
объявляет процедуру resetAU.
Выполнение следующих строк
global proc resetAll()
{
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;
}
не вызывает выполнения ни одной команды, а лишь производит объявление новой команды, которую затем можно вызывать, как все остальные стандартные команды (выделите и выполните эти строки и убедитесь, что ни один атрибут не изменяет своего значения).
Вызов объявленной процедуры (или команды, что пока одно и тоже) производится так же, как и для остальных команд - выделением ее имени и выполнением.
Можете убедиться в этом сами, выделив слово resetAU в Script Editor и нажав нужный Enter.
Разница между объявлением и выполнением Важно понимать разницу между объявлением и выполнением. Пока вы не объявите хотя бы один раз, например, процедуру resetAU, выполнив строки
global proc resetAll()
{
i"
MAYA каждый раз будет ругаться на попытку вызова команд resetAU, например, по нажатию кнопки
// Error: Cannot find procedure “resetAU”. //
Каждый раз когда MAYA встречает незнакомую ей команду, она в первую очередь проверяет таблицу объявленных пользователем процедур и если имя команды там отсутствует, MAYA начинает, как правило, ругаться.
Еще раз повторюсь, что процедура - удобный способ объединить большой набор команд в один блок, для того, чтобы вызывать его потом неоднократно. И прежде, чем вызвать процедуру, она должна быть обязательно объявлена. Чтобы изменить действие процедуры, достаточно ее отредактировать и переобъявить.
Работа с файлами. Чтение и запись