Maya

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

shamimatsu

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】マテリアル全選択リストから指定名を除外する - 三味松ブログ サフィック...
ABOUT ME
shamimatsu
shamimatsu
3DCGデザイナー
ながらくゲーム業界で2D、3DCGデザイナーとして働いてきましたが、新しい業界に挑戦中です。 ブログのデザインをリニューアル中のため、見づらい箇所もあるかもしれませんが少しづつ修正していきます。
記事URLをコピーしました