Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Внесение изменений в плугин

Читайте также:
  1. Антропогенные изменения состояния и структуры природных систем, зональность антропогенных изменений ландшафтов (пояса, зоны, подзоны влияния).
  2. Возрастные изменения морфологических и физиологических признаков растений, их отдельных органов. Возможности регулирования возрастных изменений растений.
  3. Выявление рефлекторных изменений
  4. Лист регистрации изменений 26
  5. Меры успешного проведения изменений в организации
  6. Организаторы оставляют за собой право на внесение изменений в порядок посещения экскурсионных объектов, сохраняя программу в целом.

MAXScript позволяет вносить изменения в плугин во время работы 3ds max. При этом объекты текущей или вновь загруженной сцены, созданные плугином предыдущих версий автоматически дополняются до новой. Делается это с помощью простого сравнения имен локальных переменных, блоков параметров и самих параметров. При этом локальные переменные и параметры с совпадающими переменными сохраняются, вновь созданные заполняются значениями по умолчанию, а удаленные отбрасываются. Имеются, однако, следующие ограничения

Следует учитывать, что такой механизм работает только для тех плугинов, в определении которых явно задан параметр classID.

Вы можете взять управление процессом доработки объекта до новой версии в свои руки. Для этого надо определить обработчик события update, которое происходит, если загружается объект, созданных одной из предыдущих версий плугина. В этом случае может пригодиться значение локальной переменной version, которая содержит номер версии плугина, создавшего объект. Например

plugin name: “Some Object” classID: #(786543,345678) version: 3

(…

on update do

(if version = = 1 then … -- Доработка объекта первой версии

if version = = 2 then … - Доработка объекта второй версии

)

)

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

 

Срипт плугины класса Geometry

Скрипт плугины этого класса требуют наличия метода create, если они не являются временными, невидимыми, или не расширяют другие плугины.

Пример

plugin geometry rowbar_plugin_def name:"RowBar"

category:"Scripted Primitives"

(local boxes, clickAt

-- Свиток параметров с единственным задатчиком, который задает

-- расстояние между box-ами

rollout dist "Parameters"

(spinner dist "Distance" range:[-1000,1000,20]

)

-- Средство создания объектов

tool create

(on mousePoint click do

(clickAt = worldPoint

boxes = for i in 1 to 10 collect box pos:([dist.dist.value*i,0,0] + clickAt)

#stop

)

)

)

 

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

А вот более сложный пример плугина, позволяющего создавать примитивы box с одинаковой длинной ребер, или, попросту говоря, кубы.

Пример

plugin geometry Cuboid name:"Cuboid" classID:#(0x133067, 0x54374)

category:"Scripted Primitives" extends:Box

(-- Локальная функция для определения максимума из двух чисел

fn fmax val1 val2 = if val1 > val2 then val1 else val2

-- Средство создания объекта

tool create

(on mousePoint click do

case click of

(1: nodeTM.translation = gridPoint

2: #stop

)

on mouseMove click do

if click == 2 then delegate.width = delegate.length =

delegate.height = 2 * fmax (abs gridDist.x) (abs gridDist.y)

)

)

 


Дата добавления: 2015-10-31; просмотров: 66 | Нарушение авторских прав


Читайте в этой же книге: Список с редактором (combobox) | Однострочный редактор | Список с возможностью множественного выбора | Индикатор процесса | Тело контекстного меню | Макро скрипты | Правила оформления средств работы с мышью | Скрипт плугины | Правила построения скрипт-плугина | Определение параметра |
<== предыдущая страница | следующая страница ==>
Функции, применяемые при разработке скрипт плугинов| Скрипт плугины класса SimpleObject

mybiblioteka.su - 2015-2024 год. (0.006 сек.)