3DCGbook

映像プロダクションに所属しています。主に毎日のアウトプットを配信していこうと思います。

子供のペアレント/アンペアレントの切り替え

f:id:blendcomp:20130706210050p:plain

英語は適当なので気にせずに…

選択したオブジェクトの子供のペアレント/アンペアレント
切替をできるものを作ってみました。

例えば、ルートジョイントのJointOrientを変更する際に便利かなと。
あとはちょっとPythonの勉強もかねてってことで作ってみました。

import pymel.core as pm
class childParentWindow:   
    _selParent = None
    _getChild  = None
    
    def unParentCommand(self):
        self._selParent = pm.selected()
        self._getChild = self._selParent[0].getChildren()
        self._selectObjField.setText(str(self._selParent[0]) + "'s children were dissolved")
        self._unParentButton.setEnable(False)
        self._parentButton.setEnable(True)
        pm.parent(self._getChild,w=True)
        pm.select(self._selParent)
    
    def parentCommand(self):
        pm.parent(self._getChild,self._selParent,a=True)
        pm.select(self._selParent)
        self._unParentButton.setEnable(True)
        self._parentButton.setEnable(False)
        self._selectObjField.setText("None")
         
    def __init__(self):
        hWindow = pm.window(t='childParent ON/OFF',mnb=False,mxb=False,s=False,w=200)
        with hWindow:
            hLayout = pm.columnLayout()
            with hLayout:
                pm.text(l=('1.Select a parent object\n'
                           '2.Push "Unparent" unparent child\n'
                           '3.Push "Parent"  back Parent'),
                           al='left')
                self._selectObjField = pm.textField(en=False,w=200,tx="None")
            vLayout = pm.rowLayout(nc=2)
            with vLayout:
                self._unParentButton = pm.button(l='Unparent',w=100,c=pm.Callback(self.unParentCommand))
                self._parentButton   = pm.button(l='Parent',w=100,en=False,c=pm.Callback(self.parentCommand))

createWindow = childParentWindow()