Maya Добавление атрибута числового соединения (без API)
Я искал в Интернете решение, но безрезультатно. В настоящее время я пытаюсь добавить составной атрибут, основанный на индексе (т. Е. "Object.attribute[0], object.attribute[1], object.attribute[2] и т. Д.), Аналогично тому, как атрибуты vertex и uv Изучив документацию, кажется, что нет четкого способа добиться этого.
Попытки: как определить родителя: cmds.addAttr(nodeType, ln=theParent, nc=x, at='compound')
- Обычное использование составного флага в addAttr.
Использование цикла for с форматированием строки:
for i in range(x):
cmds.addAttr(ln='object.attribute[%s]' %i, p=theParent)
-Eval:
for i in range(x):
mel.eval("addAttr -ln attribute["+str(i)+"] -p theParent;")
С форматированием строки я сталкиваюсь с этой ошибкой.
# Traceback (most recent call last):
# File "<maya console>", line 2, in <module>
# RuntimeError: Error occurred during execution of MEL script
# line 1: Long name 'attribute[0]' contains invalid characters. //
Этот составной атрибут в конечном итоге будет содержать произвольное количество типов данных Int32Array.
Я мог бы создать свой собственный узел и создать необходимые атрибуты через API, но я не хочу создавать никаких дополнительных зависимостей.
Я прошу прощения за любые дыры в моем вопросе или если что-то неясно. Пожалуйста, спросите, и я могу объяснить дальше.
Спасибо.
1 ответ
Установите родительский атрибут как мульти-атрибут, используя -m
флаг:
cmds.addAttr("polyCube1", ln = "example", at="compound", nc = 2, m=True)
cmds.addAttr("polyCube1", ln = "atx", at="float", p="example")
cmds.addAttr("polyCube1", ln = "aty", at="float", p="example")
Это устанавливает polyCube1.compound в качестве атрибута, состоящего из двух частей (способ UV - двухчастного), а также мульти-атрибута. Вы можете добавлять пары, индексируя ваши setAttr
или соединения:
cmds.setAttr("polyCube1.example[0].atx", 1)
cmds.setAttr("polyCube1.example[0].aty", 1)
cmds.setAttr("polyCube1.example[1].atx", 2)
cmds.setAttr("polyCube1.example[1].aty", 2)
print cmds.getAttr("polyCube1.example[1].aty")
# 2.0