Мел Баттон: Цвет ScriptJob? - PullRequest
0 голосов
/ 28 марта 2019

Новый для мел, и я пишу пользовательский интерфейс для выбора объекта в моей сцене Maya, и мне нужна помощь, как я могу использовать скрипт-джоб, чтобы изменить цвет кнопки на белый, когда объект выбран, и вернуться к цвету по умолчанию, когда объект не выбран Цвет кнопки должен оставаться белым до тех пор, пока объект выбран. Пожалуйста, дайте решения на основе кода ниже. Спасибо!

if (`window -exists MyPicker`) deleteUI MySelecter;
window -title "Item Selecter" -widthHeight 170 300 -sizeable false -mxb false MySelecter;
    formLayout -numberOfDivisions 100 MySelecter;{

        button -label "object1" -w 170 -h 44 -enable true -backgroundColor 0.820 0.360 0.161 -command "select object1" object1_Btn;
        button -label "object2" -w 170 -h 44 -enable true -backgroundColor 0.820 0.360 0.161 -command "select object2" object2_Btn;
        button -label "object3" -w 170 -h 44 -enable true -backgroundColor 0.820 0.360 0.161 -command "select object3" object3_Btn;
        button -label "object4" -w 170 -h 44 -enable true -backgroundColor 0.820 0.360 0.161 -command "select object4" object4_Btn;
        button -label "object5" -w 170 -h 44 -enable true -backgroundColor 0.820 0.360 0.161 -command "select object5" object5_Btn;               
    }
    formLayout -edit
        //object button
        -attachForm object1_Btn "top" 14
        -attachForm object1_Btn "left" 0

        -attachForm object2_Btn "top" 71
        -attachForm object2_Btn "left" 0

        -attachForm object3_Btn "top" 128
        -attachForm object3_Btn "left" 0

        -attachForm object4_Btn "top" 185
        -attachForm object4_Btn "left" 0

        -attachForm object5_Btn "top" 242
        -attachForm object5_Btn "left" 0

    MySelecter;
showWindow MySelecter;  

1 Ответ

0 голосов
/ 29 марта 2019

Этот ответ полностью на Python, поэтому вы можете преобразовать его в MEL, если вы настаиваете на его использовании.

Задания сценариев могут запускаться различными способами при возникновении события.Это могут быть такие вещи, как, когда время изменилось, пользователь отменяет действие, или в вашем случае, когда выбор изменился.

Вы можете получить полный список имен этих событий, выполнив следующее:

cmds.scriptJob(listEvents=True)

То, что вы ищете, это "SelectionChanged".

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

import maya.cmds as cmds


# Create a function that will be called from the script job whenever there's a change to the selection.
def func():
    print "The selection has changed!"

# Create a new script job and save the result to a variable. The result is the script job's id number.
script_job_id = cmds.scriptJob(event=["SelectionChanged", func])

# When it's no longer needed, pass the script job's id with the kill parameter to remove it.
#cmds.scriptJob(kill=script_job_id)

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

Когда ваш инструмент закрывается, вы можете удалить задание сценария, используя его параметр kill, чтобы он больше не выполнялся, когда он вам не нужен.

И, кроме того, обратите внимание, что вынаписал Хагги, если у вас нет веских причин, я бы просто придерживался Python вместо MEL.Синтаксис намного проще, он имеет безумное количество библиотек, и он просто более силен для выполнения простых вещей, таких как манипулирование строками.Плюс Python используется во многих других программах, MEL - нет.Это правда, что есть некоторые команды, которые можно выполнять только в MEL, но вы можете легко оценить строку MEL с помощью Python.

...