Maya

【Maya:Python】グループノードだけ選択から除外する

shamimatsu

maya2022を使用
複数まとめて処理を行いたい時に、グループノードだけは除外したい時がありました。
選択階層化すべてを選択するコマンドはmayaにあったので、そこからグループノードだけ外せないか考えました。
コードはpython3のため過去バージョンのmayaでは動作しない可能性があります

階層化すべてを選択する

選択 → 階層 で選択しているのノードの階層化をすべて選択できます。

python3コマンド

1# -*- coding: utf-8 -*-
2import maya.cmds as cmds
3
4cmds.SelectHierarchy()

グループノードだけ選択から除外する

コード

階層のあるグループノードを選択した状態で実行してください。
画像ではわかりづらいですがグループノードは選択から外れています

1# -*- coding: utf-8 -*-
2import maya.cmds as cmds
3import pymel.core as pm
4
5cmds.SelectHierarchy()
6sl_nodes = cmds.ls(sl=True, typ='transform')
7for sl_node in sl_nodes:
8    obj = pm.PyNode(sl_node)
9    shape = obj.getShape()
10    if shape == None:
11            print(sl_node)
12            cmds.select(sl_node, d=1)

説明

グループノードはシェイプが無いのでNoneが返ってきます。
Noneだったら選択を外すことにより「グループノードだけ選択から除外する」ことができました。

==を!=に変えれば逆にグループノードだけ選択できます。

if shape != None:

参考

 [Maya] getShape で shape ノードを取得する

ABOUT ME
shamimatsu
shamimatsu
3DCGデザイナー
ながらくゲーム業界で2D、3DCGデザイナーとして働いてきましたが、新しい業界に挑戦中です。 ブログのデザインをリニューアル中のため、見づらい箇所もあるかもしれませんが少しづつ修正していきます。
記事URLをコピーしました