コンスト先とか元とか
昔作ったやつ
実行で、コンスト元を選択し
Ctrl押しながらだと、コンスト先を取得する。
現状再帰的処理は入れていないし
色々不備はあるかと。
今度修正。
# -*- encoding: utf-8 -*- import maya.cmds as cmds import sys def ConnectionList(KeyState,List,hako,Sel): #重複処理 S_ListNode = list(set(List)) for Node in S_ListNode: #拘束先を取得 if KeyState == 4: #コンストだけ抽出 if cmds.objectType(Node,isType="orientConstraint") or cmds.objectType(Node,isType="pointConstraint") or cmds.objectType(Node,isType="parentConstraint") or cmds.objectType(Node,isType="scaleConstraint"): #targetParentMatrixはバッティングする可能性が高いので修正案件 hako.append(cmds.listConnections(Node + ".target[0].targetParentMatrix",d=False)) #拘束元を取得 elif KeyState == 0: if cmds.objectType(Node,isType="orientConstraint") or cmds.objectType(Node,isType="pointConstraint") or cmds.objectType(Node,isType="parentConstraint") or cmds.objectType(Node,isType="scaleConstraint"): Source = cmds.listConnections(Node + ".target[0].targetParentMatrix",d=False)[0] if Source == Sel: hako.append(cmds.listConnections(Node + ".constraintParentInverseMatrix")) return hako def Constraint_Source_Select(): hako = [] ListNode = [] KeyState = cmds.getModifiers() #0-None #1-Shift #2-CapsLock #4-Ctrl #8-Alt Sels = cmds.ls(sl=True) for Sel in Sels: #source拘束元←←←←←←←←destination拘束される側 #Ctrl押されてたら = 拘束先を取得 if KeyState == 4: ListNode = cmds.listConnections(Sel,source=True,destination=False) #NotPusyKey = 拘束元を取得 elif KeyState == 0: ListNode = cmds.listConnections(Sel,source=False,destination=True) #例外処理 if ListNode == None: cmds.select(cl=True) cmds.confirmDialog(message = u'そもそも接続がないみたいです',button=['OK'], defaultButton='OK') sys.exit() #ここを再帰的にすれば、最後まで検索可能。 List = ConnectionList(KeyState,ListNode,hako,Sel) print List if len(List) > 0: cmds.select(List[0]) cmds.confirmDialog(message = u"選択しました。\n" + str(List[0]) ,button=['OK'], defaultButton='OK') else: cmds.confirmDialog(message = u'それ以上接続がないみたいです',button=['OK'], defaultButton='OK') Constraint_Source_Select()