2019年1月31日木曜日

シーンのインスタンスを選択

会社でインスタンスのみを選択できないかといわれたので
ちょっと作ってみました。
複雑なシーンでテストしていないのでバグがあるかもですが...
トランスフォームノードからシェイプ名を選択して
シェイプ名からトランスフォームノードのリストを作り
そのリストの数が1より多い場合選択するというシンプルな感じです。
あーでもこの方法だとグループノードがインスタンスになっている
場合対応できないですねー




#coding:utf-8
import maya.cmds as mc
import maya.mel as ml

trs = mc.ls(type= "transform")
dic = {}

for t in trs:
 try:
  k = mc.listRelatives(t,s=1)[0]
  if k in dic.keys():
   dic[k].append(t)
  else:
   dic[k] = [t]
 except TypeError:
  pass
  
lst = []
for k in dic.keys(): 
 if len(dic[k]) > 1:
  lst.extend(dic[k])
 
mc.select(lst,r=1)