Получить MDagPath для созданного узла в postConstructor (Maya Python API)

При использовании API Maya Python для создания нового типа узла мне нужно запустить «maya.cmds.getAttr» для атрибута сразу после создания узла.

Каков правильный способ получить dagPath к узлу, который вы только что создали в методе postConstructor?


person stowaway    schedule 20.08.2015    source источник
comment
Я использую API2, но одно (или оба) было бы полезно!   -  person stowaway    schedule 21.08.2015
comment
Небольшое примечание: может проявляться неожиданное поведение, иногда даже оставляющее Maya в нестабильном состоянии, если узел пытается что-то сделать с dagPath. Я не знаю, является ли хорошей практикой запрос dagPaths узлом. Что-то, о чем следует помнить. В идеале узел должен быть в блаженном неведении о своем месте (или чьем-либо месте) в dagPath. Такие вещи желательно закодировать в команды.   -  person kartikg3    schedule 21.08.2015
comment
Спасибо за чаевые! В этом конкретном случае мне нужно вычислить ввод из массива векторов с предопределенным количеством входных точек (8). Мне сказали, что единственный способ убедиться, что массив имеет правильное количество элементов, — запустить getAttr для индекса массива, который вы хотите создать. Вы знаете более чистый способ?   -  person stowaway    schedule 21.08.2015


Ответы (1)


Когда вы находитесь в методе postConstrutor(), вы можете использовать ссылку thisMObject() для доступа к экземпляру узла. Оттуда вы можете создать MDagPath и передать его команде getAttr. Но вам не нужно этого делать, потому что вместо этого вы можете использовать API для доступа к атрибуту. Например:

thisNode = self.thisMObject()
plug = om.MPlug( thisNode, footPrint.size )
sizeVal = plug.asMDistance()

этотMObject() -> MObject

Возвращает MObject, связанный с этим определяемым пользователем узлом. Это позволяет использовать MFnDependencyNode или создавать плагины для атрибутов этого узла.

person cyrille    schedule 13.01.2016
comment
@stowaway, помогло? - person cyrille; 06.04.2016