Читайте также:
|
|
Макро скрипты – это программы, написанные на MAXScript, которые ассоциированы с кнопками на инструментальной панели, и выполняются при нажатии этой кнопки. Прежде всего, нужно определить макро скрипт с помощью следующей синтаксической конструкции
macroScript Имя_переменной category: Текстовая_строка
buttonText: Текстовая_строка toolTip: Текстовая_строка
icon: Массив_или_строка silentErrors: Логическое_выражение
Далее должен следовать текст программы на MAXScript, которая и будет выполняться при нажатии кнопки. Рассмотрим пример макро скриптов, создающих свободную и направленную камеры.
macroScript Free_Camera category:"Cameras" tooltip:"Free Camera" \
Icon:#("Cameras",2)
(StartObjectCreation FreeCamera)
macroScript Target_Camera category:"Cameras" \
tooltip:"Targeted Camera" Icon:#("Cameras",1)
(StartObjectCreation TargetCamera)
После определения макро скрипта его имя появляется в списке макро скриптов диалога настройки пользовательского интерфейса. Разместить кнопку, соответствующую макро скрипту, можно на инструментальной панели или панели с закладками. Для этого надо нажать на них правую кнопку мышки и выбрать в появившемся меню пункт Customize. На экране появится диалог Customize User Interface, который изображен на рисунке. В списке макро скриптов Вы видите два только что определенных скрипта.
В выпадающем списке Category надо выбрать категорию созданного макро скрипта и отбуксировать нужный Вам скрипт в выбранное место инструментальной панели. Имя переменной – единственный обязательный параметр. В данном случае в эту переменную ничего не заносится. Макро скрипты запоминаются в файлах, о чем речь будет далее. Если не определен параметр buttonText, то именно это имя заносится в список. Параметр category определяет пункт в выпадающем списке Category. Макро скрипты, определяемые с одинаковыми значениями этого параметра заносятся в списки, которые появляются при выборе этого пункта. Текст всплывающей подсказки, для создаваемой кнопки определяется параметром toolTip. Параметр buttonText задает текст на кнопке и в списке. Текст на кнопке появляется, если не определен параметр icon, с помощью которого определяется картинка на кнопке. Этот параметр может быть представлен либо массивом из строки и числа, либо одной строкой. Строка определяет имя файла, в котором содержатся иконки, а число – номер иконки в этом файле. Если задана только строка, то номер иконки считается равным единице. Имя файла с иконками состоит из двух частей. Первая, базовая, указывается в параметре. Далее следует суффикс, например, “_24i.bmp”, который указывает размер и тип файла с иконками. В качестве имени файла может быть указана и пустая строка. В этом случае используются внутренние иконки 3ds max. Например
macroScript Box category:”Objects” toolTip:”Box”
icon:#(“standard”,1) –Используется первая иконка файла standard
(
StartObjectCreation Box
)
macroScript Sphere category:"Objects" tooltip:"Sphere"
icon:#("", 2) -- Используется вторая стандартная иконка
(
StartObjectCreation Sphere
)
macroScript Cone category:"Objects" tooltip:"Cone"
icon:"myicon" -- Используется вторая иконка файла myicon
(
StartObjectCreation Cone
)
Подробно правила создания файлов с иконками будут рассматриваться далее.
Параметр silentErrors определяет поведение макро скрипта в случае возникновения ошибки. Если этот параметр установлен в true, то сообщение об ошибке не выдается. По умолчанию значение этого параметра – false.
Тело макро скрипта – обычная программа на MAXScript и переменные, определенные внутри него, подчиняются обычным правилам видимости. Если внутри макро скрипта определяется свиток, то в его функциях можно использовать локальные переменные этого макро скрипта, но ни одна внешняя программа не может получить доступа к ним. Определение макро скрипта не генерирует переменной, с помощью которой можно было бы обратится к нему. Вместо этого результатом определения является целое число, которое служит идентификатором определяемого скрипта. Для каждого из определенных в 3ds max макро скриптов запоминается информация о том, в каком файле он содержится и начиная с какого места этого файла выполняется. Последнее особо актуально, если в одном файле определено несколько скриптов. В связи с этим не рекомендуется корректировать, удалять или перемещать файлы, содержащие макро скрипты.
Существует пять способов определения макро скриптов
В MAXScript имеется ряд функций для работы с макро скриптами. Все они являются методами предопределенной структуры macros. Например функция
macros.load Символьная_строка
Загружает как макро скрипты все файлы с расширением .mcr, которые содержатся в директории, указанном символьной строкой. Если строка не указана, то в качестве директория берется директорий текущих настроек пользовательского интерфейса. Создать новый макро скрипт можно с помощью функции
macros.new Символьная_строка_1 Символьная_строка_2
Символьная_строка_3 Символьная_строка_4 Символьная_строка_5
Первая символьная строка задает имя макро скрипта, вторая - категорию, а третья - текст всплывающей подсказки. Четвертый параметр представляет собой текст на кнопке и, наконец, пятый - сам текст скрипта. При таком способе определения картинку на кнопке определить нельзя.
Для выполнения уже определенного макро скрипта предназначена функция
macros.run Символьная_строка_1 Символьная_строка_2
или
macros.run Число
В первом случае выполняется скрипт с именем, заданным первой строкой и категорией, указанной во втором параметре. Во втором используется идентификатор макро скрипта, то есть целое число, которое возвращается оператором его определения. Аналогичные параметры имеет и функция редактирования макро скрипта
macros.edit Символьная_строка_1 Символьная_строка_2
или
macros.edit Число
В результате ее вызова на экране появится окно редактирования, в которое будет загружен текст указанного макро скрипта. Этот способ предоставляет Вам возможность корректно исправить макро скрипт во время работы 3ds max
В качестве примера можно привести макро скрипт, создающий графический файл с копией активного видового окна.
MacroScript GrabViewport category:"Tools" tooltip:"Grab Viewport"
(
---------------------------------------------------------------------
-- Макро скрипт MACROSCRIPT
--Создан:3/23/99
--Исправлен:4/28/99
--Автор: Borislav Petrov
--bobo@email.archlab.tuwien.ac.at
---------------------------------------------------------------------
--Копирует активное видовое окно в графический файл
--Формат Имени файла:
--VPGRAB_ИмяMaxФайла_ИмяВидовогоОкна_НомерТекущегоКадра
---------------------------------------------------------------------
--
-- Инициализация переменных
local grab_bmp --Битовая карта, в которую будет помещен снимок
-- видового окна
local bmp_name --Имя файла для сохранния битовой карты
local get_viewport_name --Имя видового окна
local gac,gct,mfn --Переменные, в которых хранятся активная камера,
-- текущее время, имя MAX файла
--
--Начало макро скрипта
grab_bmp = gw.getViewportDib() --Занесем снимок активного окна в
-- битовую карту
get_viewport_name = viewport.GetType() --Получим имя активного окна
gvn = get_viewport_name as string --и переведем его в символьную
-- строку
gvn = substring gvn 6 (gvn.count-5) --обрежем строку слева на 5
-- символов
--(Отрезаются символы "view_"
if gvn == "camera" then --если оставшееся слово - "camera"
(gac = getActiveCamera() --получим эту камеру
gvn = gac.name --и ее имя
)
mfn = MaxFileName --Получим имя загруженного MAX файла
if mfn == "" then --Если имя не указано,
mfn = "Untitled" --считаем его "Untitled".
else --В противном случае
mfn = getFileNameFile mfn --возьмем имя без расширения ".MAX"
gct = SliderTime as string --Преобразуем в строку номер текущего кадра
bmp_name = "VPGRAB_"+ mfn +"_" +gvn + "_" + gct --Сформируем имя
-- выходного файла
--Откроем стандартный диалог сохранения файла
bmp_name = getSaveFileName caption:"Save Viewport to:" \ filename:bmp_name \
types:"BMP(*.bmp)|*.bmp|JPG(*.jpg)|*.jpg|TGA(*.tga)|*.tga|"
if bmp_name!= undefined then -- Если пользователь подтвердил
-- сохранение файла
(grab_bmp.filename = bmp_name --Получим окончательно выбраное
--имя файла
save grab_bmp --Сохраним в него битовую карту
display grab_bmp --Выведем битовую карту в окно
)
-- Конец макро скрипта
)
Дата добавления: 2015-10-31; просмотров: 144 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Тело контекстного меню | | | Правила оформления средств работы с мышью |