Майя игнорирует мои двойные цитаты

У меня проблемы с запуском Maya из скрипта Python с помощью команды mel. Вернее, у меня проблема с запуском команды mel, Maya запускается нормально.

Вот что говорится в документации Maya о запуске с помощью команды mel:

-команда [команда мел]

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

Что бы я ни пробовал, Maya просто игнорирует мои двойные кавычки и выдает синтаксическую ошибку. Это мой код:

import os
dir = "D:\exampleProject\maya"
os.system('maya.exe -command \"setProject \"'+dir+'\"\"')

Я полагаю, что в Maya это будет читаться так: setProject "D:\exampleProject\maya" (это то, что я хочу) Вместо этого я получаю: setProject D:\exampleProject\maya, который генерирует синтаксическую ошибку в Maya из-за отсутствие "" вокруг пути к каталогу.


person user2832718    schedule 11.10.2013    source источник
comment
Вы либо хотите добавить дополнительный \" перед setProject, либо удалить один из \" в конце   -  person YXD    schedule 11.10.2013
comment
Как насчет этого: 'maya.exe -command \"setProject '+dir+'\"', потому что, насколько я понимаю, в качестве команды mel будет отправлено только "setProject ", потому что это первый параметр в кавычках.   -  person David Ruhmann    schedule 11.10.2013
comment
@David Ruhmann Пробовал, не получилось. Он запускает Maya, а в консоли Maya устанавливает как: setProject D:\exampleProject\maya (и получает синтаксическую ошибку) без кавычек   -  person user2832718    schedule 11.10.2013
comment
@Mr E Когда я пробую ваши предложения, я получаю // Ошибка: строка 1: количество аргументов при вызове setProject не соответствует количеству параметров в определении процедуры. //   -  person user2832718    schedule 11.10.2013
comment
@user2832718 user2832718 Затем я бы попробовал поиграть с одинарными кавычками и посмотреть, примет ли их Майя. 'maya.exe -command \"setProject \''+dir+'\'\"'   -  person David Ruhmann    schedule 11.10.2013
comment
@DavidRuhmann Maya читает вашу строку как: setProject 'd:/projectsTest/p1005_knl/001_dad/010_/maya', что мне и нужно, если эти надоедливые ' заменят себя на . Так близко!   -  person user2832718    schedule 11.10.2013
comment
@DavidRuhmann Двойной побег сделал свое дело! Бесконечно благодарен!   -  person user2832718    schedule 12.10.2013


Ответы (2)


Ответ из комментариев

В документации MEL указано, что Каждый оператор в MEL должен заканчиваться с точкой с запятой (;).

Строки MEL также требуют экранирования кавычек, поэтому двойной экранирование внутренних кавычек.

'maya.exe -command \"setProject \\\"'+dir+'\\\";\"'
person David Ruhmann    schedule 11.10.2013
comment
За исключением того, что синтаксическому анализатору действительно все равно, является ли это однострочным оператором. Документация MEL, к сожалению, довольно часто ошибочна. - person joojaa; 13.10.2013

Если все, что вам нужно, это установить проект, вы можете использовать флаг запуска «-proj».

maya.exe the/scene/iwant/to/open.ma -proj the/project/root

см. документацию

person hoylpraal    schedule 14.10.2013