Метод addAttr для объектов pymel

Я не могу использовать метод addAttr правильно. Я использую те же аргументы, что и при вызове из pymel.core, но это не дает мне те же результаты.

Я пытаюсь добавить пользовательский атрибут сообщения, чтобы потом можно было легко искать определенные типы объектов. Когда я делаю это из pymel.core и включаю ту же ссылку на объект, что и аргумент, он работает нормально.

#get object reference
test_object = pm.ls(sl=1)[0]

#this one spits out an error
test_object.addAttr(longName = 'custom', attributeType = 'message')

#this one works fine
pm.addAttr(test_object, longName = 'custom', attributeType = 'message')

Я продолжаю получать эту ошибку Ошибка: TypeError: строка файла 1: addAttr() принимает ровно 2 аргумента (дано 1) Какой дополнительный аргумент он ищет, когда я использую его таким образом? Я явно упускаю что-то очевидное о том, как работают методы, но я не могу понять это.

2 ответа

Решение

Метод addAttr, представленный для узлов DG в Maya PyMel, имеет следующую подпись.

addAttr(attr, **kwargs)

Вот attr это позиционный аргумент, представляющий имя атрибута. Кварги могут быть снабжены всеми другими соответствующими флагами, используемыми в pm.addAttr() метод. Таким образом, вы должны передать имя атрибута в качестве первого аргумента.

node.addAttr('custom', attributeType='message')

Надеюсь, это поможет.

Из общедоступной ветки

pCube.addAttr('timeBasedAttr', keyable=True, attributeType='float', min=0.0, max=1.0)

Вы должны написать:

test_object.addAttr('custom', attributeType = 'message')

Я пытался, и он не выдает ошибку.

Другие вопросы по тегам