Render.ru

Горячие кнопки для команд, которых нет в списке

#1
Хочу назначить горячие клавиши для нескольких команд, которых не нашёл в списке команд, доступных для назначения клавиш через Customize User interface)))
НАпример очень нужна возможность включать выключать галочку "Use NURMS Subdivision" для Rditable Poly или там же хочется иметь возможность с клавиатуры переклбчать режим кисточки с "Puch/Put" на "Relax" "Revert"

Каков вообще в максе принцип этого дела.?

Знаю, что можно написать макрос, который потом какимто образом появится в группе команд, доступных для назначения горячих клавиш. Если это единственный вариант, то тогда каким должен быть этот макрос?

Например для "Use NURMS Subdivision" я написал макрос типа

if $*.surfSubdivide = on then
$.surfSubdivide = off
else
$.surfSubdivide = on

но он почемуто работает только один раз, тоесть при первом вызове включает сглаживание а при втором его не выключает!!

ОЧень прошу помочь разобратся в этом вопросе))
 

nemyax

Активный участник
Рейтинг
16
#2
Стас Написал:
-------------------------------------------------------
> НАпример очень нужна возможность включать
> выключать галочку "Use NURMS Subdivision" для
> Rditable Poly

Команду зовут NURMS Toggle, но в Edit Poly она уже работать не будет.
 

nemyax

Активный участник
Рейтинг
16
#3
Насчёт макроса. Там случайно не булевское значение требуется? Может, он у тебя не так интерпретирует стринг "off", как ты ожидаешь? Например, как единицу, т. е. true? Попробуй заменить on и off на true и false.
 

GoodMan

Мастер
Рейтинг
260
#4
Попробуй такой принцип:

macroScript SurfSubdivide
category:"My Shotcuts"
toolTip:"Surface subdivide"
(
on execute do
(
$.surfSubdivide = not $.surfSubdivide
)
)

Кинь в папку 3dsmax/UI/macroscripts

В кастомайз ищи в категории My Shotcuts - и вешай на клавишу..

 
#5
2 All ВСЕМ СПАСИБО - ЗАДАЧА РЕШЕНА!!!

2 GoodMan
УУУ всё работает!!!!
Огромный фенкс за столь быстрый и качественный ответ))
По аналогии наделал для 9 нужных команд за какие-то пол часа - терь работаю в Эксперт моде))))
 

GoodMan

Мастер
Рейтинг
260
#6
А для работы с несколькими объектами тело скрипта будет таким:

on execute do
(
try(
for i in selection do
i.surfSubdivide = not i.surfSubdivide
)catch()
)
 
Сверху