#python #maya #mel
#python #maya #mel
Вопрос:
Я пытаюсь обновить все вкладки шейдеров (в редакторе атрибутов) для каждого добавленного нового шейдера. Я случайно наткнулся на эту команду Mel — updateAE, из которой я собираю информацию здесь
Я попытался выполнить простой тест, пока у меня есть несколько поверхностных шейдеров в сцене, и запустить следующий код:
ssList = cmds.ls(type = 'surfaceShader')
for each in ssList:
mm.eval("updateAE "string" " each)
Но вместо этого я получил следующую ошибку,
TypeError: cannot concatenate 'str' and 'list' objects
или иногда эта ошибка:
RuntimeError: Error occurred during execution of MEL script
Line 1.33: Wrong number of arguments on call to updateAE.
Является ли это жизнеспособным решением, существуют ли какие-либо другие подобные методы / функции написания сценариев, которые позволят обновить редактор атрибутов?
Комментарии:
1. Ошибка, которую вы получаете, говорит о том, что
ssList
содержит другие списки, а не строки. Если это имеет смысл, вы можете сделать что-то вродеmm.eval("updateAE "string" " ' '.join(each))
2. @Germano При тестировании вашего метода я получаю последнюю ошибку
Wrong number of arguments on call to updateAE
3. Я ничего не знаю о Mel, но из документа, на который вы ссылались, кажется, что
updateAE
ожидается только один строковый аргумент, и вы уже передаете обычный"string"
. Я бы поискал там решение.4. @Germano Я верю, что вы говорите правильно. Mel, похоже, ищет одну строку, а не ту, которая считывается из списка, несмотря на то, что я добавляю
str(each)
или разбиваю список и добавляю его в команду… Если я не делаю это неправильно5. Вы пробовали:
for each in ssList: for i in each: mm.eval("updateAE %s" % i)
?