Petite astuce pour filtrer les nodes par attributs via la commande ls de Maya
Par Narann le vendredi, 15 avril 2011, 22:59 - Script et code - Lien permanent
Billet express: Je viens de découvrir une façon d'utiliser la commande ls que je ne connaissais pas. C'était pourtant évidant. :casseTeteMur:
La technique consiste à utiliser * dans le nom de l'objet...
Bon, ça je le savais déjà. Mais là ou ça devient intéressant, c'est quand il s'agit de récupérer tous les objets ayant un attribut bien spécifique.
Cela évite d'avoir à utiliser une boucle! :sauteJoie:
Je vous propose de voir quelques cas d'utilisation.
Exemples
Récupérer tous les objets de la scène ayant l'attribut "message":
cmds.ls( "*.message" ) # Result: [u'node1.message', u'node2.message', u'node3.message', u'node4.message' ]
Masquer les noms des attributs dans les valeurs renvoyées:
cmds.ls( "*.message", objectsOnly=True ) # Result: [u'node1', u'node2', u'node3', u'node4' ]
Vous remarquerez peut être que ces deux exemples ne renvoient aucun objet dans un namespace.
Pour également vérifier les objets dans les namespaces:
cmds.ls( "*.message", objectsOnly=True, recursive=True ) # Result: [u'ns1:node1', u'ns2:node1', u'node2', u'node3' ]
Et voilà!
Conclusion
J'espère que ce petit billet vous aura appris un truc.
Personnellement, depuis, je n'utilise plus que ça! :banaeyouhou:
A bientôt!
Dorian