Можно ли использовать CMD для отправки команд в активном окне Maya?

Я новичок в Maya, и я хотел запускать команды в cmd в активном окне Maya, чтобы изменять вещи в сцене, например, помещать сферу, быть в python.

from pymel.all import *
sphere()

или МЭЛ

polySphere -r 1 -sx 20 -sy 20 -ax 0 1 0 -cuv 2 -ch 1;

Я нашел Mayapi, и я нашел несколько материалов, связанных с «безголовым» (без графического интерфейса), но я не нашел пока ничего, что можно было бы запускать в открытом окне, может быть, потому, что я не очень хорошо знаю термины. Я хотел бы, чтобы это было на питоне, но если вы знаете какое-либо решение на MEL, вы также можете разместить его здесь!

Есть ли способ сделать это без указания пути к открытому документу?


person KevynTD    schedule 10.06.2020    source источник
comment
возможно, вам следует использовать PyAutoGUI для управления мышью/клавиатурой и отправки клавиш в активное окно.   -  person furas    schedule 10.06.2020
comment
Я хочу автоматизировать некоторые сложные и длительные задачи для любого компьютера, который может иметь более одного экрана и даже продолжать работать, пока меняется фокус окна, работая только в Maya. Но было бы неплохо, если бы это были более простые вещи, спасибо за предложение!   -  person KevynTD    schedule 10.06.2020
comment
Взгляните на команду mayaCommandPort maya. Таким образом, внешнее приложение может отправлять команды Maya.   -  person haggi krey    schedule 10.06.2020


Ответы (1)


У вас есть четыре основных варианта программного управления Maya.

  1. Запуск скриптов внутри редактора скриптов в Maya. Для этого требуется, чтобы у вас был открытый экземпляр Maya с графическим интерфейсом, и вы либо вводили команды самостоятельно, либо инициировали сценарии, загружая и выполняя их в редакторе сценариев. Это прекрасно подходит для автоматизации повторяющихся задач, но требует ручного вмешательства с вашей стороны.

  2. Вы можете отправлять отдельные команды в Maya через TCP-соединение, используя командный порт Maya Это в основном похоже на подключение к другому компьютеру через telnet: вы можете управлять сеансами Maya, но вы будете общаться исключительно с помощью текста. Его обычно используют, например, люди, которые написание скриптов в Sublime Text для их тестирования в Maya без переключения окон

  3. Вы можете запустить копию Maya только для командной строки используя интерпретатор Python MayaPy, поставляемый с Maya, и модуль maya.standalone, в котором размещается сеанс Maya без графического интерфейса пользователя. Это позволяет вам выполнять команды Python в Maya вообще без использования графического интерфейса — это обычный инструмент для задач автоматизации.

  4. Вы можете передать аргумент скрипта в Maya при запуске с флагом '-c' (для "команды"). Maya откроет и запустит этот скрипт. По устаревшим причинам команды представляют собой только MEL, а не python, но вы можете обойти это, используя команду MEL «python» вместе с командой Python в кавычках.

Все они полезны, правильный действительно зависит от того, что вам нужно делать. Однако для длительных задач № 3, вероятно, является наиболее надежным методом, поскольку его легко повторять и тестировать.

person theodox    schedule 10.06.2020
comment
Большое спасибо! Поскольку мне нужно взаимодействовать с открытым пользовательским интерфейсом (сложные пользовательские инструменты), я думаю, что буду использовать mayaCommandPort, который даже позволяет мне писать на других языках!! - person KevynTD; 11.06.2020
comment
Вы по-прежнему будете отправлять либо MEL, либо Python через TCP-порт, но Maya не будет заботиться о том, как вы туда доберетесь. Пятый вариант, который я здесь не упомянул, — это использование RDP-сервера (мне нравится rpyc. readthedocs.io/en/latest), работающий в Maya и разговаривающий с ним. На что вам нужно обратить внимание, так это на то, что Maya не любит запускать что-либо, касающееся сцены, из другого потока. - person theodox; 12.06.2020