Обновление редактора атрибутов

#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) ?