maya2022を使用
複数まとめて処理を行いたい時に、グループノードだけは除外したい時がありました。
選択階層化すべてを選択するコマンドはmayaにあったので、そこからグループノードだけ外せないか考えました。
コードはpython3のため過去バージョンのmayaでは動作しない可能性があります
広告
階層化すべてを選択する
選択 → 階層 で選択しているのノードの階層化をすべて選択できます。
python3コマンド
# -*- coding: utf-8 -*-
import maya.cmds as cmds
cmds.SelectHierarchy()
グループノードだけ選択から除外する
コード
階層のあるグループノードを選択した状態で実行してください。
画像ではわかりづらいですがグループノードは選択から外れています
# -*- coding: utf-8 -*-
import maya.cmds as cmds
import pymel.core as pm
cmds.SelectHierarchy()
sl_nodes = cmds.ls(sl=True, typ='transform')
for sl_node in sl_nodes:
obj = pm.PyNode(sl_node)
shape = obj.getShape()
if shape == None:
print(sl_node)
cmds.select(sl_node, d=1)
説明
グループノードはシェイプが無いのでNoneが返ってきます。
Noneだったら選択を外すことにより「グループノードだけ選択から除外する」ことができました。
==を!=に変えれば逆にグループノードだけ選択できます。
if shape != None:
参考
[Maya] getShape で shape ノードを取得する

【Maya:Python】グループ内の一部を選択から除外したい(後方一致)以前書いた記事とは少し異なり
【Maya:Python】マテリアル全選択リストから指定名を除外する - 三味松ブログ
サフィック...
広告