1

Тема: AHK: команды Autodesk Maya внутри скрипта

Здравствуйте!
Я работаю в программе Autodesk Maya совместно с AutoHotkey.

Очень интересно знать, могу ли я в скрипте AutoHotkey'я использовать Майские команды, чтобы не переназначать клавиши, как в моём случае, а напрямую проигрывать?
В предыдущем вопросе, я показывал, какие режимы мне нужны - нужны точно такие, но вместо переноса кнопок главное задействовать Майские команды.

Вот например, две разные команды на включение и выключение:

polySelectConstraint -wholeSensitive on;
polySelectConstraint -wholeSensitive off;

Команды можно окутать MEL'ом, написав выражение и использовать, как одну команду на включение и выключение.

if (`polySelectConstraint -q -wholeSensitive`) {
polySelectConstraint -wholeSensitive off;
}
else {
polySelectConstraint -wholeSensitive on;
};

Нужно, как-то внедрить этот код в скрипт AutoHotkey.

Это избавит меня от такой необходимости назначать мудреные клавиши в Майя, а потом переносить их на другие кнопки АвтоХоткеем.

2

Re: AHK: команды Autodesk Maya внутри скрипта

А каков алгоритм использования майских команд без autohotkey?
Принципе, все, что можно сделать "руками", можно сделать и на autohotkey.

3

Re: AHK: команды Autodesk Maya внутри скрипта

Maya имеет встроенный интерпретируемый язык MEL, который позволяет передовать команды через Script Editor (и не только) ядру Maya без компиляции в машинный код. Этот язык был задуман ровно тогда, когда и создавалась сама Майя. В прошлом её интерфейс был на 100% написан на MEL и многие другие вещи. Сейчас встроили полноценно Python, его точно так же можно проигрывать в Script Editor, командной строке и много другими способами.

Например: ввёл строку: polySelectConstraint -wholeSensitive on;, "проиграл" в Script Editor и сразу получаем результат.

Подробности:
Maya MEL scripting tutorial
Maya Embedded Language
Maya: MEL & API

4

Re: AHK: команды Autodesk Maya внутри скрипта

Через window spy узнать имя контрола. Затем активировать его командой controlfocus, и командой send ввести нужную строку.

5 (изменено: Алексей, 2011-07-17 13:08:33)

Re: AHK: команды Autodesk Maya внутри скрипта

Спасибо!

Я плохо разбираюсь в этих вещах, если не затруднит, можно подробнее?
Мне не понятно, как определить, что есть имя контрола и как всё это потом активировать.

Maya window:

>>>>>>>>>>( Window Title & Class )<<<<<<<<<<<
Maya
ahk_class QWidget

>>>>>>>>>>>>( Mouse Position )<<<<<<<<<<<<<
On Screen:    1559, 491  (less often used)
In Active Window:    1559, 491

>>>>>>>>>( Now Under Mouse Cursor )<<<<<<<<
ClassNN:    QWidget1
Text:    
Color:    0xC8D0D4  (Blue=C8 Green=D0 Red=D4)

>>>>>>>>>>( Active Window Position )<<<<<<<<<<
left: 0     top: 0     width: 1680     height: 1026

>>>>>>>>>>>( Status Bar Text )<<<<<<<<<<

>>>>>>>>>>>( Visible Window Text )<<<<<<<<<<<
formLayout1
viewPanes
modelPanel1
modelPanel2
modelPanel3
mayaLayoutInternalWidget
modelPanel4
modelPanel4

>>>>>>>>>>>( Hidden Window Text )<<<<<<<<<<<
qt_rubberband
mainPanelHistory
mayaLayoutInternalWidget
mayaLayoutInternalWidget
mayaLayoutInternalWidget
modelPanel1
modelPanel1
modelEditorIconBar
modelPanel2
modelPanel2
modelEditorIconBar
modelPanel3
modelPanel3
modelEditorIconBar
modelPanel4
modelEditorIconBar
MainCommandLineLayout
formLayout13
symbolButton19
commandLine1
qt_splithandle_
qt_splithandle_
iconTextButton1
qt_toolbar_ext_button

>>>>( TitleMatchMode=slow Visible Text )<<<<
dockControl1
modelPanel1
modelPanel2
modelPanel3
modelPanel4
Channel Box / Layer Editor
Shelf
Status Line

>>>>( TitleMatchMode=slow Hidden Text )<<<<
qt_splithandle_modelPanel4
dockControl2
Tool Box
Time Slider
Range Slider
Command Line
Help Line
dockControl3

Script Editor:

>>>>>>>>>>( Window Title & Class )<<<<<<<<<<<
Script Editor
ahk_class QWidget

>>>>>>>>>>>>( Mouse Position )<<<<<<<<<<<<<
On Screen:    1127, 718  (less often used)
In Active Window:    955, 533

>>>>>>>>>( Now Under Mouse Cursor )<<<<<<<<
ClassNN:    QWidget48
Text:    qt_scrollarea_viewport
Color:    0x2A2A2A  (Blue=2A Green=2A Red=2A)

>>>>>>>>>>( Active Window Position )<<<<<<<<<<
left: 172     top: 185     width: 1125     height: 644

>>>>>>>>>>>( Status Bar Text )<<<<<<<<<<

>>>>>>>>>>>( Visible Window Text )<<<<<<<<<<<
mayaLayoutInternalWidget
scriptEditorPanel1
formLayout168
formLayout170
paneLayout13
mayaLayoutInternalWidget
qt_scrollarea_vcontainer
qt_scrollarea_hcontainer
qt_scrollarea_viewport
tabLayout27
mayaLayoutInternalWidget
qt_tabwidget_stackedwidget
formLayout172
qt_scrollarea_viewport
frameLayout39
mayaLayoutInternalWidget
formLayout169
flowLayout19
scriptEditorToolbarGotoLineButton
scriptEditorToolbarGotoField
searchSeperator
scriptEditorToolbarSearchDownUp
scriptEditorToolbarSearchDownButton
scriptEditorToolbarSearchField
executeSeperator
executeButton
executeAllButton
optionsSeperator
showLineNumbersButton
echoAllCommandsButton
showSeperator
showBothButton
showInputButton
showHistoryButton
clearSeperator
clearAllButton
clearInputButton
clearHistoryButton
fileSeperator
saveScriptToShelfButton
saveScriptButton
sourceScriptButton
openScriptButton

>>>>>>>>>>>( Hidden Window Text )<<<<<<<<<<<
mayaLayoutInternalWidget
qt_splithandle_
mayaLayoutInternalWidget
mayaLayoutInternalWidget
mayaLayoutInternalWidget
mayaLayoutInternalWidget
qt_tabwidget_stackedwidget
formLayout175
qt_scrollarea_hcontainer
qt_scrollarea_viewport
textField18
qt_scrollarea_hcontainer
qt_scrollarea_hcontainer
qt_scrollarea_viewport
qt_scrollarea_hcontainer
qt_scrollarea_viewport
mayaLayoutInternalWidget
scriptEditorPanel1

>>>>( TitleMatchMode=slow Visible Text )<<<<
qt_splithandle_
cmdScrollFieldReporter13
formLayout171
MEL
cmdScrollFieldExecuter37

>>>>( TitleMatchMode=slow Hidden Text )<<<<
qt_splithandle_
tabLayout28
Quick Help
textScrollList16
qt_scrollarea_vcontainer
qt_scrollarea_vcontainer
formLayout173
cmdScrollFieldExecuter38
qt_scrollarea_vcontainer
formLayout174
cmdScrollFieldExecuter39
qt_scrollarea_vcontainer

6

Re: AHK: команды Autodesk Maya внутри скрипта

QWidget1 и QWidget48 это имена контролов. Я не знаю какой из них является строкой для ввода.
В любом случае это имя контрола надо использовать в команде controlfocus, что бы его активировать
Если так

ControlFocus , QWidget1 , Maya ahk_class QWidget

или так

ControlFocus , QWidget48 , Maya ahk_class QWidget

активируется нужная строка, то все работает.

Я пытался в одном из приложений (last.fm) с контролами QWidget работать , но autohotkey не работал с этими контролами.

7

Re: AHK: команды Autodesk Maya внутри скрипта

Значит я ввожу одну из строк в скрип автоХоткея, а под ней уже пишу выражение на отправку в Майя?