Срабатывание кнопки скрипта в туллбаре в сочетании с Shift

Содержание

Общие положения скриптинга

Срабатывание кнопки скрипта в туллбаре в сочетании с Shift

Нажмите радиокнопку с Maxscript в командной панели

Если ошибка сравнения чисел и получается false. Maxscript иногда возвращает округлённое значение, а у себя держит это за дробное число с плавающей точкой.

Нажимаем на любую кнопку панели Modify

Помещаем в буфер обмена имя файла и дату в обратном порядке и расширение для архиватора

Запуск внешнего скрипта как функции

Отправляем нажатие клавиш и хоткеев в активное окно (в сам 3dsMax)

Универсальные единые функции подсчёта вершин и полигонов для любого количества и типов объектов.

Как получить дескриптор любой кнопки чтобы нажать её скриптом

Перехват окна на примере STL Import и виртуальное нажатие в нём элементов UI

Функции-“синонимы”

Открытие роллаута на позиции прошлого закрытия

Нормализованные XYZ векторы камеры въюпорта

Функция проверки пуста ли папка

Русский (кириллица) в редакторе MaxScript

Фильтр по классу SplineShape, LinearShape, line

Применение структур.

Универсальные методы работы Edit_Poly и Editable_Poly

Тестовый пример для понимания работы со структурами

Структурой создана зависимость работы одного диалога от состояния другого

Value > MAXWrapper > Node

Viewport Redraw Callback Mechanism

Node Event событий System Коллбэк событий объекта

Сообщения windows.sendMessage, UIAccessor.sendMessage

Разбираемся. Пример. Ссылки

Управление элементами интерфейса 3dsMax.UIAccessor

Делаем окно роллаута “поверх определённого окна”

dialogMonitorOps.getWindowHandle()

radiobuttons

Конвертация текста в число и выполнение текста как кода

Заставим кнопку нажаться автоматически без использования функций

Интерактивность спиннера

Гиперссылка в роллауте

Быстро выделить объекты по имени

Подгрузка функции из файла.

Аббревиатуры

Сортировка массива пузырьком

Пример фильтра нескольких объектов по признаку.

Передаём функции переменную

Битовые массивы. Применение множеств

В битовом массиве проверка наличия элемента вместо finditem

Получение открытых вершн

Получение открытых рёбер

Способ формирования массива

Учимся Скрывать/открывать обновление командной панели Modify при выполнении скрипта

Использование функции полосы прогресса

Устанавливаем позицию вершины под модификатором Edit_Poly

Доступ к объектам и подобъектам под модификатором Edit_Poly

Работа с двумерными массивами.

Меняем местами значение двух переменных

Работа с интерфейсами (свойствами) функций.

Меняем местами подэлементы двумерного массива

Немножко логики и интересный способ присвоения значений переменным.

Работа с внешним текстовым файлом

1) Основные операции с файлом

2) Создание нового файла

3) Открытие файла:

Выполнение следующего кода если не выполнился или выполнился код

и доступ к геометрии

Выделение вершин функцией в Edit_Poly

В рамках улучшения понимания MaxScriptHelp, разбираемся с одним из методов.

А теперь рассмотрим ещё один грамм гранита науки касательно справки MaxScript и использования модификатора Edit_Poly

Организуем структуру

Организуем элемент интерфейса.

Выпадающий свиток dropDownList

PushPrompt. Messagebox. QueryBox

“%”в MaxScript

Рассадка одного объекта на вершины другого объекта

Рассчитывается угол между объектами (повёрнут ли один объект в сторону другого)

Поворачиваем объект с помощью кватерниона

Матрицы трансформаций

Сравнение элементов массивов

Циклы

Массивы

 

 

Общие положения скриптинга

_______________________________________________________________

1) Каждое выражение, которое добавляется в скрипт надо проверять в "песочнице", то-есть вводить выражение в Maxscript Editor с тестовыми параметрами и смотреть, что возвращает листенер.

Ещё раз:

 

ДЛЯ КАЖДОГО

СЛОВА

СТРОКИ кода

НАДО

ПРОВЕРЯТЬ

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

 

Это связано с тем, что очень легко пропустить какой то аргумент, или предположил, что функция максскрипта должна вернуть то что хочешь, а получаешь что то другое. Если каждое выражение в конструкции кода проходит проверку в эдиторе, то проблем не будет. Кроме того, код становится осмысленным, идёт полное понимание того, то происходит в процессе выполнения скрипта и никаких танцев с бубном!

 

2) Скрипт лучше всего писать конструируя его таким образом, что сначала перечисляются сложные функции как модули, из которых потом будет состоять более простенькая конструкция самого скрипта.

 

3) Переменные из тела самого скрипта не передаются функциям, поэтому переменные должны быть объявлены перед функцией, в которой присутствует эта переменная.

Пример:

macroScript...

(

---functions---

fn A_fn = (

aaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaa

)

 

fn B_fn= (

bbbbbbbbbbbbbbbbbbbbb

bbbbbbbbbbbbbbbbbbbbb

bbbbbbbbbbbbbbbbbbbbb

)

 

fn С_fn= (

ccccccccccccccccccccc

ccccccccccccccccccccc

ccccccccccccccccccccc

)

 

---script---

 

if A_fn() then B_fn() else C_fn()

)

 

4) Лишние скобки не нужны и всё следующее перечисленное в скобках не нуждается если:

- это единственная функция с несколькими параметрами, которые эта функция ожидает.

- если это конструкции

if()then()else()

if()then()

if()do()

case <expr> of ()

try()catch()

for () do|collect ()

while()do()

do()while()

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

Срабатывание кнопки скрипта в туллбаре в сочетании с Shift

Кнопки скрипта в туллбаре - это типа вот эти

Можно запрограммировать дополнительное событие на нажатие этой кнопки в сочетании с нажатием на Shift

if keyboard.shiftPressed then () else ()
Так вот особенность в том что это можно сделать только с кнопкой Shift

И экспериментально выявлено что

if keyboard.altPressed

if keyboard.escPressed

if keyboard.controlPressed

Не работают.

_______________________________________________________________



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



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