用返回值替换参数值

2024-06-28 19:23:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在maya中为IK/FK开关创建选定对象的列表,遇到了一些问题

创建选择列表实例时,我需要临时设置参数值foo、bar和baz

在maya中选择控制曲线时,我希望将值从foo、bar和baz更改为我选择的控制曲线

我的印象是,当我从selectjoints返回变量时。。。功能,我可以实现这一变化。然而,当我打印列表时,我只看到foo、bar和amp;巴兹和我都不明白为什么

class Create_Selection_Chains:

    def __init__(self, name, Fks, Ikw, ikpv):
        self.name = name
        self.Fks = Fks
        self.Ikw = Ikw
        self.ikpv = ikpv

    def select_joints_afk(self):

        if cmds.ls(selection = True,type=("transform",'nurbsCurve')):
            sel = cmds.ls(sl=True)
            fks = sel
            fkCtrls = cmds.listRelatives(sel,  type=("transform",'nurbsCurve'))
            Fks = [nurbsCurve for nurbsCurve in fkCtrls if nurbsCurve.startswith('FK') & nurbsCurve.endswith('Ctrl')]
            cmds.textFieldButtonGrp(gtF0, edit = True, tx ='' .join(sel),buttonLabel='IK OK',backgroundColor = (.5,.8,.2))
            Fks.extend(sel)
            print Fks
            return Fks 
        else:
            text = cmds.confirmDialog( title='Error', message='Must select joint', button=['OK'], 
                                        defaultButton='Ok', dismissString='No' )

    def select_joints_aikw(self):
        if cmds.ls(selection = True,type=("transform",'nurbsCurve')):

            sel=cmds.ls(selection = True)
            ikwrist = sel
            Ikw = [nurbsCurve for nurbsCurve in ikwrist if nurbsCurve.startswith('IK') & nurbsCurve.endswith('Ctrl')]
            cmds.textFieldButtonGrp(gtF1, edit = True, tx ='' .join(ikwrist),buttonLabel='IK OK',backgroundColor = (.5,.8,.2))
            cmds.select(ikwrist)
            print Ikw
            return Ikw
        else:
            text = cmds.confirmDialog( title='Error', message='Must select joint', button=['OK'], defaultButton='Ok', 
                                        dismissString='No' )

    def select_joints_ikpv(self):

        if cmds.ls(selection = True,type=("transform",'nurbsCurve')):
            sel = cmds.ls(sl=True)
            ikPvsel = sel
            ikpv = [nurbsCurve for nurbsCurve in ikPvsel if nurbsCurve.startswith('IK') & nurbsCurve.endswith('Ctrl')]
            cmds.textFieldButtonGrp(gtF2, edit = True, tx ='' .join(ikPvsel),buttonLabel='IK OK',backgroundColor = (.5,.8,.2))        
            cmds.select(ikPvsel)
            print ikpv
            return ikpv
        else:
            text = cmds.confirmDialog( title='Error', message='Must select joint', button=['OK'], 
                                        defaultButton='Ok', dismissString='No' )

我的选择实例之一:

right_arm_select = Create_Selection_Chains("right arm", "foo", "bar", "baz")

我按下按钮打印我的列表 :

cmds.button(label='IK 2 FK', command = 'ik_2_fk()', width=100)

用于打印列表的代码


    def ik_2_fk(self):
        print("List created" + self.Fks +self.Ikw+self.ikpv)

Tags: selftrue列表ifdefokselectls