Preview:
def IKFKarmSetup(side):
            #IKFKarmJoint#
            nameOfJoint = [('%s_arm_01_bln_jnt'%(side)),('%s_arm_02_bln_jnt'%(side)),('%s_arm_03_bln_jnt'%(side))]
            for each in nameOfJoint:
                cmds.joint(n=each)
            
            cmds.group(n='%s_arm_bln_jnt_grp'%(side),em=True)
            cmds.parent('%s_arm_01_bln_jnt'%(side),'%s_arm_bln_jnt_grp'%(side))
            cmds.scaleConstraint('world_ctrl','%s_arm_bln_jnt_grp'%(side),mo=True)
            
            toGetPos = [('%s_arm_01_setup'%(side), '%s_arm_01_bln_jnt'%(side)),('%s_arm_02_setup'%(side),'%s_arm_02_bln_jnt'%(side)),('%s_arm_03_setup'%(side),'%s_arm_03_bln_jnt'%(side))]
            for each in toGetPos:
                forDel = cmds.parentConstraint(each[0],each[1],mo = False) 
                cmds.delete(forDel)
                
            cmds.setAttr('%s_arm_01_bln_jnt.drawStyle'%(side),2)
            cmds.setAttr('%s_arm_02_bln_jnt.drawStyle'%(side),2)
            cmds.makeIdentity( '%s_arm_01_bln_jnt'%(side),apply=True, rotate=True)
            
            toParentCon = [('%s_fk_arm_01_jnt'%(side),'%s_arm_01_bln_jnt'%(side)),('%s_ik_01_jnt'%(side), '%s_arm_01_bln_jnt'%(side)),('%s_fk_arm_02_jnt'%(side), '%s_arm_02_bln_jnt'%(side)),('%s_ik_02_jnt'%(side), '%s_arm_02_bln_jnt'%(side)),('%s_fk_arm_03_jnt'%(side), '%s_arm_03_bln_jnt'%(side)),('%s_ik_03_jnt'%(side), '%s_arm_03_bln_jnt'%(side))]
            for each in toParentCon:
                cmds.parentConstraint(each[0],each[1],mo = True)
                
            cmds.curve(d=1, p=[(1.25, 0, 7.5),(-1.25, 0, 7.5),(-1.25, 0, 1.25),(-7.5, 0, 1.25),(-7.5, 0, -1.25),(-1.25, 0, -1.25),(-1.25, 0, -7.5),(1.25, 0 ,-7.5),(1.25, 0, -1.25),(7.5, 0, -1.25),(7.5, 0, 1.25,),(1.25, 0 ,1.25),(1.25, 0, 7.5)])
            cmds.rename('%s_ik_fk_switch'%(side))
            ControllerAttr('%s_ik_fk_switch'%(side),False,False,False,False,False,False,False,True,True,True,True,True,True,True,True,15,False,False,False,True,True,True)
            cmds.group(n='%s_ik_fk_switch_grp'%(side))
            cmds.parent('%s_ik_fk_switch_grp'%(side), 'world_ctrl')
            cmds.addAttr('%s_ik_fk_switch'%(side),sn='IKFK', min = 0, max=1 ,k=1,dv=1)
            cmds.addAttr('%s_ik_fk_switch'%(side),sn='bendyVis',at = 'bool',k=1)
            cmds.addAttr('%s_ik_fk_switch'%(side),sn='thumbCurl',k=1)
            cmds.addAttr('%s_ik_fk_switch'%(side),sn='indexCurl',k=1)
            cmds.addAttr('%s_ik_fk_switch'%(side),sn='middleCurl',k=1)
            cmds.addAttr('%s_ik_fk_switch'%(side),sn='ringCurl',k=1)
            cmds.addAttr('%s_ik_fk_switch'%(side),sn='pinkyCurl',k=1)
            cmds.parentConstraint('%s_arm_03_bln_jnt'%(side), '%s_ik_fk_switch_grp'%(side))
            cmds.shadingNode('reverse',n = '%s_arm_ik_rev'%(side),asUtility=1)
            
            toConnectAttr = [('%s_ik_fk_switch.IKFK'%(side),'%s_arm_03_bln_jnt_parentConstraint1.%s_fk_arm_03_jntW0'%(side,side)),('%s_ik_fk_switch.IKFK'%(side),'%s_arm_02_bln_jnt_parentConstraint1.%s_fk_arm_02_jntW0'%(side,side)),('%s_ik_fk_switch.IKFK'%(side),'%s_arm_01_bln_jnt_parentConstraint1.%s_fk_arm_01_jntW0'%(side,side)),('%s_ik_fk_switch.IKFK'%(side),'%s_arm_ik_rev.inputX'%(side)),('%s_arm_ik_rev.outputX'%(side),'%s_arm_03_bln_jnt_parentConstraint1.%s_ik_03_jntW1'%(side,side)),('%s_arm_ik_rev.outputX'%(side),'%s_arm_02_bln_jnt_parentConstraint1.%s_ik_02_jntW1'%(side,side)),('%s_arm_ik_rev.outputX'%(side),'%s_arm_01_bln_jnt_parentConstraint1.%s_ik_01_jntW1'%(side,side)),('%s_ik_fk_switch.IKFK'%(side),'%s_fk_arm_01_ctrl_grp.visibility'%(side)),('%s_arm_ik_rev.outputX'%(side),'%s_ik_arm_ctrl_grp.visibility'%(side)),('%s_arm_ik_rev.outputX'%(side),'%s_elbow_ctrl_grp.visibility'%(side)),('%s_arm_ik_rev.outputX'%(side),'%s_elbow_direction_crv_grp.visibility'%(side))]
            for each in toConnectAttr:
                cmds.connectAttr(each[0],each[1])
            
        IKFKarmSetup('l')
        IKFKarmSetup('r')
    
        def bendyArmSetup(side):
            cmds.curve(d=3, p=[(0, 0, 0),(0, 2.5, 0),(0, 5, 0),(0, 7.5, 0),(0, 10, 0)])
            cmds.rename('%s_upr_bendy_arm_crv'%(side))
            cmds.curve(d=3, p=[(0, 0, 0),(0, 2.5, 0),(0, 5, 0),(0, 7.5, 0),(0, 10, 0)])
            cmds.rename('%s_lwr_bendy_arm_crv'%(side))
            nameOfLoc = ['%s_upr_bendy_arm_01_loc'%(side),'%s_upr_bendy_arm_02_loc'%(side),'%s_upr_bendy_arm_03_loc'%(side),'%s_upr_bendy_arm_04_loc'%(side),'%s_upr_bendy_arm_05_loc'%(side),'%s_lwr_bendy_arm_01_loc'%(side),'%s_lwr_bendy_arm_02_loc'%(side),'%s_lwr_bendy_arm_03_loc'%(side),'%s_lwr_bendy_arm_04_loc'%(side),'%s_lwr_bendy_arm_05_loc'%(side),'%s_upr_bendy_arm_aim_up_loc'%(side),'%s_lwr_bendy_arm_aim_up_loc'%(side)]
            for each in nameOfLoc:
                cmds.spaceLocator(n=each)

            listToGetPos = [('%s_arm_01_bln_jnt'%(side),'%s_upr_bendy_arm_aim_up_loc'%(side)),('%s_arm_02_bln_jnt'%(side),'%s_lwr_bendy_arm_aim_up_loc'%(side))]
            for each in listToGetPos:
                forDel = cmds.parentConstraint(each[0],each[1],mo=False)
                cmds.delete(forDel)
            cmds.parent('%s_upr_bendy_arm_aim_up_loc'%(side),'%s_arm_01_bln_jnt'%(side))
            cmds.parent('%s_lwr_bendy_arm_aim_up_loc'%(side),'%s_arm_02_bln_jnt'%(side))
            cmds.setAttr('%s_upr_bendy_arm_aim_up_loc.translateY'%(side),50)
            cmds.setAttr('%s_lwr_bendy_arm_aim_up_loc.translateY'%(side),50)
            
            toGetLocPos = [('%s_upr_bendy_arm_01_loc.translateY'%(side),0),('%s_upr_bendy_arm_02_loc.translateY'%(side),2.5),('%s_upr_bendy_arm_03_loc.translateY'%(side),5),('%s_upr_bendy_arm_04_loc.translateY'%(side),7.5),('%s_upr_bendy_arm_05_loc.translateY'%(side),10),('%s_lwr_bendy_arm_01_loc.translateY'%(side),0),('%s_lwr_bendy_arm_02_loc.translateY'%(side),2.5),('%s_lwr_bendy_arm_03_loc.translateY'%(side),5),('%s_lwr_bendy_arm_04_loc.translateY'%(side),7.5),('%s_lwr_bendy_arm_05_loc.translateY'%(side),10),('%s_ik_fk_switch.bendyVis'%(side),1)]
            for each in toGetLocPos:
                cmds.setAttr(each[0],each[1])
        
            toConnectLoc = [('%s_upr_bendy_arm_01_loc.worldPosition[0]'%(side),'%s_upr_bendy_arm_crvShape.controlPoints[0]'%(side)),('%s_upr_bendy_arm_02_loc.worldPosition[0]'%(side),'%s_upr_bendy_arm_crvShape.controlPoints[1]'%(side)),('%s_upr_bendy_arm_03_loc.worldPosition[0]'%(side),'%s_upr_bendy_arm_crvShape.controlPoints[2]'%(side)),('%s_upr_bendy_arm_04_loc.worldPosition[0]'%(side),'%s_upr_bendy_arm_crvShape.controlPoints[3]'%(side)),('%s_upr_bendy_arm_05_loc.worldPosition[0]'%(side),'%s_upr_bendy_arm_crvShape.controlPoints[4]'%(side)),('%s_lwr_bendy_arm_01_loc.worldPosition[0]'%(side),'%s_lwr_bendy_arm_crvShape.controlPoints[0]'%(side)),('%s_lwr_bendy_arm_02_loc.worldPosition[0]'%(side),'%s_lwr_bendy_arm_crvShape.controlPoints[1]'%(side)),('%s_lwr_bendy_arm_03_loc.worldPosition[0]'%(side),'%s_lwr_bendy_arm_crvShape.controlPoints[2]'%(side)),('%s_lwr_bendy_arm_04_loc.worldPosition[0]'%(side),'%s_lwr_bendy_arm_crvShape.controlPoints[3]'%(side)),('%s_lwr_bendy_arm_05_loc.worldPosition[0]'%(side),'%s_lwr_bendy_arm_crvShape.controlPoints[4]'%(side))]
            for each in toConnectLoc:
                cmds.connectAttr(each[0],each[1])
                
            listOfBendyArmController = [('%s_bendy_arm_01_ctrl'%(side),'%s_bendy_arm_01_ctrl_grp'%(side)),('%s_bendy_arm_02_ctrl'%(side),'%s_bendy_arm_02_ctrl_grp'%(side)),('%s_bendy_arm_03_ctrl'%(side),'%s_bendy_arm_03_ctrl_grp'%(side))]
            for each in listOfBendyArmController:
                cmds.curve(d=1, p=[(0, -3, 3),(0, -1, 2),(0, 0, 4),(0, 1, 2),(0, 3, 3),(0, 2, 1),(0, 4, 0),(0, 2, -1),(0, 3, -3),(0, 1, -2),(0, 0, -4),(0, -1, -2),(0, -3, -3),(0, -2, -1),(0, -4, 0),(0, -2, 1),(0, -3, 3)])
                cmds.rename(each[0])
                cmds.group(n=each[1])
            cmds.delete('%s_bendy_arm_01_ctrl'%(side),'%s_bendy_arm_02_ctrl'%(side),'%s_bendy_arm_03_ctrl'%(side),constructionHistory = True)
            
            uprBendyController01forDel = cmds.pointConstraint('%s_arm_01_setup'%(side),'%s_bendy_arm_01_ctrl_grp'%(side),mo=False)
            uprBendyController01forDel = cmds.pointConstraint('%s_arm_02_setup'%(side),'%s_bendy_arm_01_ctrl_grp'%(side),mo=False)
            uprBendyController02forDel = cmds.pointConstraint('%s_arm_02_setup'%(side),'%s_bendy_arm_02_ctrl_grp'%(side),mo=False)
            uprBendyController03forDel = cmds.pointConstraint('%s_arm_02_setup'%(side),'%s_bendy_arm_03_ctrl_grp'%(side),mo=False)
            uprBendyController03forDel = cmds.pointConstraint('%s_arm_03_setup'%(side),'%s_bendy_arm_03_ctrl_grp'%(side),mo=False)
            uprBendyControllerForRotation01forDel = cmds.orientConstraint('%s_arm_01_setup'%(side),'%s_bendy_arm_01_ctrl_grp'%(side),mo=False)
            uprBendyControllerForRotation02forDel = cmds.orientConstraint('%s_arm_02_setup'%(side),'%s_bendy_arm_02_ctrl_grp'%(side),mo=False)
            uprBendyControllerForRotation03forDel = cmds.orientConstraint('%s_arm_02_setup'%(side),'%s_bendy_arm_03_ctrl_grp'%(side),mo=False)
            cmds.delete(uprBendyController01forDel,uprBendyController02forDel,uprBendyController03forDel,uprBendyControllerForRotation01forDel,uprBendyControllerForRotation02forDel,uprBendyControllerForRotation03forDel)
            
            listOfUprBendyJoint = ['%s_upr_bendy_arm_01_jnt'%(side),'%s_upr_bendy_arm_02_jnt'%(side),'%s_upr_bendy_arm_03_jnt'%(side),'%s_upr_bendy_arm_04_jnt'%(side),'%s_upr_bendy_arm_05_jnt'%(side),'%s_lwr_bendy_arm_01_jnt'%(side),'%s_lwr_bendy_arm_02_jnt'%(side),'%s_lwr_bendy_arm_03_jnt'%(side),'%s_lwr_bendy_arm_04_jnt'%(side),'%s_lwr_bendy_arm_05_jnt'%(side),'%s_upr_bendy_arm_01_length_jnt'%(side),'%s_upr_bendy_arm_02_length_jnt'%(side),'%s_upr_bendy_arm_03_length_jnt'%(side),'%s_upr_bendy_arm_04_length_jnt'%(side),'%s_upr_bendy_arm_05_length_jnt'%(side),'%s_lwr_bendy_arm_01_length_jnt'%(side),'%s_lwr_bendy_arm_02_length_jnt'%(side),'%s_lwr_bendy_arm_03_length_jnt'%(side),'%s_lwr_bendy_arm_04_length_jnt'%(side),'%s_lwr_bendy_arm_05_length_jnt'%(side),'%s_lwr_bendy_arm_start_length_jnt'%(side),'%s_lwr_bendy_arm_end_length_jnt'%(side),'%s_upr_bendy_arm_start_length_jnt'%(side),'%s_upr_bendy_arm_end_length_jnt'%(side)]
            for each in listOfUprBendyJoint:
                cmds.joint(n=each)
            cmds.parent('%s_upr_bendy_arm_01_jnt'%(side),'%s_lwr_bendy_arm_01_jnt'%(side),'%s_upr_bendy_arm_01_length_jnt'%(side),'%s_lwr_bendy_arm_01_length_jnt'%(side),'%s_upr_bendy_arm_start_length_jnt'%(side),'%s_lwr_bendy_arm_start_length_jnt'%(side),w=True)
            cmds.group(n='%s_upr_bendy_arm_jnt_grp'%(side),em=True)
            cmds.group(n='%s_lwr_bendy_arm_jnt_grp'%(side),em=True)
            cmds.parent('%s_upr_bendy_arm_01_jnt'%(side),'%s_upr_bendy_arm_jnt_grp'%(side))
            cmds.parent('%s_lwr_bendy_arm_01_jnt'%(side),'%s_lwr_bendy_arm_jnt_grp'%(side))
            cmds.orientConstraint('%s_arm_01_bln_jnt'%(side),'%s_upr_bendy_arm_jnt_grp'%(side),mo=True)
            cmds.orientConstraint('%s_arm_02_bln_jnt'%(side),'%s_lwr_bendy_arm_jnt_grp'%(side),mo=True)
            uprBendyJoint01forDel = cmds.pointConstraint('%s_arm_01_setup'%(side),'%s_upr_bendy_arm_01_jnt'%(side),mo=False)
            uprBendyJoint02forDel = cmds.pointConstraint('%s_arm_01_setup'%(side),'%s_upr_bendy_arm_02_jnt'%(side),mo=False)
            uprBendyJoint02forDel = cmds.pointConstraint('%s_bendy_arm_01_ctrl'%(side),'%s_upr_bendy_arm_02_jnt'%(side),mo=False)
            uprBendyJoint03forDel = cmds.pointConstraint('%s_bendy_arm_01_ctrl'%(side),'%s_upr_bendy_arm_03_jnt'%(side),mo=False)
            uprBendyJoint04forDel = cmds.pointConstraint('%s_bendy_arm_01_ctrl'%(side),'%s_upr_bendy_arm_04_jnt'%(side),mo=False)
            uprBendyJoint04forDel = cmds.pointConstraint('%s_arm_02_setup'%(side),'%s_upr_bendy_arm_04_jnt'%(side),mo=False)
            uprBendyJoint05forDel = cmds.pointConstraint('%s_arm_02_setup'%(side),'%s_upr_bendy_arm_05_jnt'%(side),mo=False)
            lwrBendyJoint01forDel = cmds.pointConstraint('%s_arm_02_setup'%(side),'%s_lwr_bendy_arm_01_jnt'%(side),mo=False)
            lwrBendyJoint02forDel = cmds.pointConstraint('%s_arm_02_setup'%(side),'%s_lwr_bendy_arm_02_jnt'%(side),mo=False)
            lwrBendyJoint02forDel = cmds.pointConstraint('%s_bendy_arm_03_ctrl'%(side),'%s_lwr_bendy_arm_02_jnt'%(side),mo=False)
            lwrBendyJoint03forDel = cmds.pointConstraint('%s_bendy_arm_03_ctrl'%(side),'%s_lwr_bendy_arm_03_jnt'%(side),mo=False)
            lwrBendyJoint04forDel = cmds.pointConstraint('%s_bendy_arm_03_ctrl'%(side),'%s_lwr_bendy_arm_04_jnt'%(side),mo=False)
            lwrBendyJoint04forDel = cmds.pointConstraint('%s_arm_03_setup'%(side),'%s_lwr_bendy_arm_04_jnt'%(side),mo=False)
            lwrBendyJoint05forDel = cmds.pointConstraint('%s_arm_03_setup'%(side),'%s_lwr_bendy_arm_05_jnt'%(side),mo=False)
            uprBendyJointForRatation01forDel = cmds.orientConstraint('%s_arm_01_setup'%(side),'%s_upr_bendy_arm_01_jnt'%(side),mo=False)
            uprBendyJointForRatation02forDel = cmds.orientConstraint('%s_arm_01_setup'%(side),'%s_upr_bendy_arm_02_jnt'%(side),mo=False)
            uprBendyJointForRatation03forDel = cmds.orientConstraint('%s_arm_01_setup'%(side),'%s_upr_bendy_arm_03_jnt'%(side),mo=False)
            uprBendyJointForRatation04forDel = cmds.orientConstraint('%s_arm_01_setup'%(side),'%s_upr_bendy_arm_04_jnt'%(side),mo=False)
            uprBendyJointForRatation05forDel = cmds.orientConstraint('%s_arm_01_setup'%(side),'%s_upr_bendy_arm_05_jnt'%(side),mo=False)
            lwrBendyJointForRatation01forDel = cmds.orientConstraint('%s_arm_02_setup'%(side),'%s_lwr_bendy_arm_01_jnt'%(side),mo=False)
            lwrBendyJointForRatation02forDel = cmds.orientConstraint('%s_arm_02_setup'%(side),'%s_lwr_bendy_arm_02_jnt'%(side),mo=False)
            lwrBendyJointForRatation03forDel = cmds.orientConstraint('%s_arm_02_setup'%(side),'%s_lwr_bendy_arm_03_jnt'%(side),mo=False)
            lwrBendyJointForRatation04forDel = cmds.orientConstraint('%s_arm_02_setup'%(side),'%s_lwr_bendy_arm_04_jnt'%(side),mo=False)
            lwrBendyJointForRatation05forDel = cmds.orientConstraint('%s_arm_02_setup'%(side),'%s_lwr_bendy_arm_05_jnt'%(side),mo=False)
            cmds.delete(uprBendyJoint01forDel,uprBendyJoint02forDel,uprBendyJoint03forDel,uprBendyJoint04forDel,uprBendyJoint05forDel,lwrBendyJoint01forDel,lwrBendyJoint02forDel,lwrBendyJoint03forDel,lwrBendyJoint04forDel,lwrBendyJoint05forDel,uprBendyJointForRatation01forDel,uprBendyJointForRatation02forDel,uprBendyJointForRatation03forDel,uprBendyJointForRatation04forDel,uprBendyJointForRatation05forDel,lwrBendyJointForRatation01forDel,lwrBendyJointForRatation02forDel,lwrBendyJointForRatation03forDel,lwrBendyJointForRatation04forDel,lwrBendyJointForRatation05forDel)
            
            listOfBendyArmLenghtJointToGetPos = [('%s_upr_bendy_arm_01_jnt'%(side),'%s_upr_bendy_arm_01_length_jnt'%(side)),('%s_upr_bendy_arm_02_jnt'%(side),'%s_upr_bendy_arm_02_length_jnt'%(side)),('%s_upr_bendy_arm_03_jnt'%(side),'%s_upr_bendy_arm_03_length_jnt'%(side)),('%s_upr_bendy_arm_04_jnt'%(side),'%s_upr_bendy_arm_04_length_jnt'%(side)),('%s_upr_bendy_arm_05_jnt'%(side),'%s_upr_bendy_arm_05_length_jnt'%(side)),('%s_lwr_bendy_arm_01_jnt'%(side),'%s_lwr_bendy_arm_01_length_jnt'%(side)),('%s_lwr_bendy_arm_02_jnt'%(side),'%s_lwr_bendy_arm_02_length_jnt'%(side)),('%s_lwr_bendy_arm_03_jnt'%(side),'%s_lwr_bendy_arm_03_length_jnt'%(side)),('%s_lwr_bendy_arm_04_jnt'%(side),'%s_lwr_bendy_arm_04_length_jnt'%(side)),('%s_lwr_bendy_arm_05_jnt'%(side),'%s_lwr_bendy_arm_05_length_jnt'%(side)),('%s_upr_bendy_arm_01_jnt'%(side),'%s_upr_bendy_arm_start_length_jnt'%(side)),('%s_upr_bendy_arm_05_jnt'%(side),'%s_upr_bendy_arm_end_length_jnt'%(side)),('%s_lwr_bendy_arm_01_jnt'%(side),'%s_lwr_bendy_arm_start_length_jnt'%(side)),('%s_lwr_bendy_arm_05_jnt'%(side),'%s_lwr_bendy_arm_end_length_jnt'%(side))]
            for each in listOfBendyArmLenghtJointToGetPos:
                forDel = cmds.parentConstraint(each[0],each[1],mo=False)
                cmds.delete(forDel)
            
            cmds.makeIdentity('%s_upr_bendy_arm_01_jnt'%(side),'%s_lwr_bendy_arm_01_jnt'%(side),'%s_upr_bendy_arm_01_length_jnt'%(side),'%s_lwr_bendy_arm_01_length_jnt'%(side),'%s_upr_bendy_arm_start_length_jnt'%(side),'%s_lwr_bendy_arm_start_length_jnt'%(side),apply=True,rotate=True)
            
            locToGetPos = [('%s_upr_bendy_arm_01_jnt'%(side),'%s_upr_bendy_arm_01_loc'%(side)),('%s_upr_bendy_arm_02_jnt'%(side),'%s_upr_bendy_arm_02_loc'%(side)),('%s_upr_bendy_arm_03_jnt'%(side),'%s_upr_bendy_arm_03_loc'%(side)),('%s_upr_bendy_arm_04_jnt'%(side),'%s_upr_bendy_arm_04_loc'%(side)),('%s_upr_bendy_arm_05_jnt'%(side),'%s_upr_bendy_arm_05_loc'%(side)),('%s_lwr_bendy_arm_01_jnt'%(side),'%s_lwr_bendy_arm_01_loc'%(side)),('%s_lwr_bendy_arm_02_jnt'%(side),'%s_lwr_bendy_arm_02_loc'%(side)),('%s_lwr_bendy_arm_03_jnt'%(side),'%s_lwr_bendy_arm_03_loc'%(side)),('%s_lwr_bendy_arm_04_jnt'%(side),'%s_lwr_bendy_arm_04_loc'%(side)),('%s_lwr_bendy_arm_05_jnt'%(side),'%s_lwr_bendy_arm_05_loc'%(side))]
            for each in locToGetPos:
                forDel = cmds.parentConstraint(each[0],each[1],mo=False)
                cmds.delete(forDel)
                
            list = ['%s_upr_bendy_arm_loc_grp'%(side),'%s_lwr_bendy_arm_loc_grp'%(side),'%s_bendy_arm_ctrl_grp'%(side),'%s_bendy_arm_jnt_grp'%(side)]
            for each in list:
                cmds.group(n=each,em=True)
                
            cmds.connectAttr('%s_ik_fk_switch.bendyVis'%(side),'%s_bendy_arm_ctrl_grp.visibility'%(side))
            
            list = [('%s_lwr_bendy_arm_jnt_grp'%(side),'%s_bendy_arm_jnt_grp'%(side)),('%s_upr_bendy_arm_jnt_grp'%(side),'%s_bendy_arm_jnt_grp'%(side)),('%s_upr_bendy_arm_01_loc'%(side),'%s_upr_bendy_arm_loc_grp'%(side)),('%s_upr_bendy_arm_02_loc'%(side),'%s_upr_bendy_arm_loc_grp'%(side)),('%s_upr_bendy_arm_03_loc'%(side),'%s_upr_bendy_arm_loc_grp'%(side)),('%s_upr_bendy_arm_04_loc'%(side),'%s_upr_bendy_arm_loc_grp'%(side)),('%s_upr_bendy_arm_05_loc'%(side),'%s_upr_bendy_arm_loc_grp'%(side)),('%s_lwr_bendy_arm_01_loc'%(side),'%s_lwr_bendy_arm_loc_grp'%(side)),('%s_lwr_bendy_arm_02_loc'%(side),'%s_lwr_bendy_arm_loc_grp'%(side)),('%s_lwr_bendy_arm_03_loc'%(side),'%s_lwr_bendy_arm_loc_grp'%(side)),('%s_lwr_bendy_arm_04_loc'%(side),'%s_lwr_bendy_arm_loc_grp'%(side)),('%s_lwr_bendy_arm_05_loc'%(side),'%s_lwr_bendy_arm_loc_grp'%(side)),('%s_bendy_arm_01_ctrl_grp'%(side),'%s_bendy_arm_ctrl_grp'%(side)),('%s_bendy_arm_02_ctrl_grp'%(side),'%s_bendy_arm_ctrl_grp'%(side)),('%s_bendy_arm_03_ctrl_grp'%(side),'%s_bendy_arm_ctrl_grp'%(side)),('%s_upr_bendy_arm_01_length_jnt'%(side),'%s_bendy_arm_jnt_grp'%(side)),('%s_lwr_bendy_arm_01_length_jnt'%(side),'%s_bendy_arm_jnt_grp'%(side)),('%s_upr_bendy_arm_start_length_jnt'%(side),'%s_bendy_arm_jnt_grp'%(side)),('%s_lwr_bendy_arm_start_length_jnt'%(side),'%s_bendy_arm_jnt_grp'%(side))]
            for each in list:
                cmds.parent(each[0],each[1])
                
            list = [('%s_bendy_arm_01_ctrl'%(side)),('%s_bendy_arm_02_ctrl'%(side)),('%s_bendy_arm_03_ctrl'%(side))]
            for each in list:
                cmds.setAttr (each+'.visibility',keyable = False, cb = False, lock = True)
                cmds.setAttr (each+'.scaleX',keyable = False, cb = False, lock = True)
                cmds.setAttr (each+'.scaleY',keyable = False, cb = False, lock = True)
                cmds.setAttr (each+'.scaleZ',keyable = False, cb = False, lock = True)
                cmds.setAttr (each+'.rotateX',keyable = False, cb = False, lock = True)
                cmds.setAttr (each+'.rotateY',keyable = False, cb = False, lock = True)
                cmds.setAttr (each+'.rotateZ',keyable = False, cb = False, lock = True)
                cmds.setAttr (each+'.overrideEnabled' ,True) 
                cmds.setAttr (each+'.overrideColor' ,18)
            # the command to change the progress bar
            cmds.progressBar('EugenesProgressBar', edit=True, step=1)
    
        bendyArmSetup('l')
        bendyArmSetup('r')
        
        def bendyArmIKsetup():
            cmds.setAttr('r_lwr_bendy_arm_aim_up_loc.translateY',-50)
            cmds.setAttr('r_upr_bendy_arm_aim_up_loc.translateY',-50)
            list = ['r_upr_bendy_arm_02_jnt','r_upr_bendy_arm_03_jnt','r_upr_bendy_arm_04_jnt','r_upr_bendy_arm_05_jnt','r_lwr_bendy_arm_02_jnt','r_lwr_bendy_arm_03_jnt','r_lwr_bendy_arm_04_jnt','r_lwr_bendy_arm_05_jnt']
            for each in list:
                cmds.parent(each,w=True)
            
            list = ['r_upr_bendy_arm_01_jnt.rotateY','r_lwr_bendy_arm_01_jnt.rotateY','r_upr_bendy_arm_02_jnt.rotateY','r_upr_bendy_arm_03_jnt.rotateY','r_upr_bendy_arm_04_jnt.rotateY','r_upr_bendy_arm_05_jnt.rotateY','r_lwr_bendy_arm_02_jnt.rotateY','r_lwr_bendy_arm_03_jnt.rotateY','r_lwr_bendy_arm_04_jnt.rotateY','r_lwr_bendy_arm_05_jnt.rotateY']
            for each in list:
                cmds.setAttr(each,180)
            
            list = [('r_upr_bendy_arm_02_jnt','r_upr_bendy_arm_01_jnt'),('r_upr_bendy_arm_03_jnt','r_upr_bendy_arm_02_jnt'),('r_upr_bendy_arm_04_jnt','r_upr_bendy_arm_03_jnt'),('r_upr_bendy_arm_05_jnt','r_upr_bendy_arm_04_jnt'),('r_lwr_bendy_arm_02_jnt','r_lwr_bendy_arm_01_jnt'),('r_lwr_bendy_arm_03_jnt','r_lwr_bendy_arm_02_jnt'),('r_lwr_bendy_arm_04_jnt','r_lwr_bendy_arm_03_jnt'),('r_lwr_bendy_arm_05_jnt','r_lwr_bendy_arm_04_jnt')]
            for each in list:
                cmds.parent(each[0],each[1])
                
            cmds.makeIdentity('r_upr_bendy_arm_01_jnt','r_lwr_bendy_arm_01_jnt',apply=True,rotate=True)
            cmds.select('l_upr_bendy_arm_01_jnt','l_upr_bendy_arm_05_jnt','l_upr_bendy_arm_crv')
            cmds.ikHandle(n='l_upr_bendy_arm_ikh',sol='ikSplineSolver',ccv=0,pcv =0)
            cmds.select('l_lwr_bendy_arm_01_jnt','l_lwr_bendy_arm_05_jnt','l_lwr_bendy_arm_crv')
            cmds.ikHandle(n='l_lwr_bendy_arm_ikh',sol='ikSplineSolver',ccv=0,pcv =0)
            cmds.select('r_upr_bendy_arm_01_jnt','r_upr_bendy_arm_05_jnt','r_upr_bendy_arm_crv')
            cmds.ikHandle(n='r_upr_bendy_arm_ikh',sol='ikSplineSolver',ccv=0,pcv =0)
            cmds.select('r_lwr_bendy_arm_01_jnt','r_lwr_bendy_arm_05_jnt','r_lwr_bendy_arm_crv')
            cmds.ikHandle(n='r_lwr_bendy_arm_ikh',sol='ikSplineSolver',ccv=0,pcv =0)
            list = [('l_arm_01_bln_jnt','l_upr_bendy_arm_01_loc'),('l_arm_01_bln_jnt','l_upr_bendy_arm_02_loc'),('l_bendy_arm_01_ctrl','l_upr_bendy_arm_02_loc'),('l_bendy_arm_01_ctrl','l_upr_bendy_arm_03_loc'),('l_bendy_arm_01_ctrl','l_upr_bendy_arm_04_loc'),('l_bendy_arm_02_ctrl','l_upr_bendy_arm_04_loc'),('l_bendy_arm_02_ctrl','l_upr_bendy_arm_05_loc'),('l_bendy_arm_02_ctrl','l_lwr_bendy_arm_01_loc'),('l_bendy_arm_02_ctrl','l_lwr_bendy_arm_02_loc'),('l_bendy_arm_03_ctrl','l_lwr_bendy_arm_02_loc'),('l_bendy_arm_03_ctrl','l_lwr_bendy_arm_03_loc'),('l_bendy_arm_03_ctrl','l_lwr_bendy_arm_04_loc'),('l_arm_03_bln_jnt','l_lwr_bendy_arm_04_loc'),('l_arm_03_bln_jnt','l_lwr_bendy_arm_05_loc'),('r_arm_01_bln_jnt','r_upr_bendy_arm_01_loc'),('r_arm_01_bln_jnt','r_upr_bendy_arm_02_loc'),('r_bendy_arm_01_ctrl','r_upr_bendy_arm_02_loc'),('r_bendy_arm_01_ctrl','r_upr_bendy_arm_03_loc'),('r_bendy_arm_01_ctrl','r_upr_bendy_arm_04_loc'),('r_bendy_arm_02_ctrl','r_upr_bendy_arm_04_loc'),('r_bendy_arm_02_ctrl','r_upr_bendy_arm_05_loc'),('r_bendy_arm_02_ctrl','r_lwr_bendy_arm_01_loc'),('r_bendy_arm_02_ctrl','r_lwr_bendy_arm_02_loc'),('r_bendy_arm_03_ctrl','r_lwr_bendy_arm_02_loc'),('r_bendy_arm_03_ctrl','r_lwr_bendy_arm_03_loc'),('r_bendy_arm_03_ctrl','r_lwr_bendy_arm_04_loc'),('r_arm_03_bln_jnt','r_lwr_bendy_arm_04_loc'),('r_arm_03_bln_jnt','r_lwr_bendy_arm_05_loc')]
            for each in list:
                cmds.pointConstraint(each[0],each[1],mo=True)
            cmds.pointConstraint('l_arm_01_bln_jnt','l_bendy_arm_01_ctrl_grp',mo = True)
            cmds.pointConstraint('l_bendy_arm_02_ctrl','l_bendy_arm_01_ctrl_grp',mo = True)
            cmds.aimConstraint('l_bendy_arm_02_ctrl','l_bendy_arm_01_ctrl_grp',wut = 'object',wuo = 'l_upr_bendy_arm_aim_up_loc',mo = True)
            cmds.parentConstraint('l_arm_02_bln_jnt','l_bendy_arm_02_ctrl_grp',mo=True)
            cmds.pointConstraint('l_arm_03_bln_jnt','l_bendy_arm_03_ctrl_grp',mo = True)
            cmds.pointConstraint('l_bendy_arm_02_ctrl','l_bendy_arm_03_ctrl_grp',mo = True)
            cmds.aimConstraint('l_bendy_arm_02_ctrl','l_bendy_arm_03_ctrl_grp',wut = 'object',wuo = 'l_lwr_bendy_arm_aim_up_loc',mo = True)
            cmds.scaleConstraint('world_ctrl','l_bendy_arm_01_ctrl_grp',mo = True)
            cmds.scaleConstraint('world_ctrl','l_bendy_arm_02_ctrl_grp',mo = True)
            cmds.scaleConstraint('world_ctrl','l_bendy_arm_03_ctrl_grp',mo = True)
            cmds.pointConstraint('r_arm_01_bln_jnt','r_bendy_arm_01_ctrl_grp',mo = True)
            cmds.pointConstraint('r_bendy_arm_02_ctrl','r_bendy_arm_01_ctrl_grp',mo = True)
            cmds.aimConstraint('r_bendy_arm_02_ctrl','r_bendy_arm_01_ctrl_grp',wut = 'object',wuo = 'r_upr_bendy_arm_aim_up_loc',mo = True)
            cmds.parentConstraint('r_arm_02_bln_jnt','r_bendy_arm_02_ctrl_grp',mo=True)
            cmds.pointConstraint('r_arm_03_bln_jnt','r_bendy_arm_03_ctrl_grp',mo = True)
            cmds.pointConstraint('r_bendy_arm_02_ctrl','r_bendy_arm_03_ctrl_grp',mo = True)
            cmds.aimConstraint('r_bendy_arm_02_ctrl','r_bendy_arm_03_ctrl_grp',wut = 'object',wuo = 'r_lwr_bendy_arm_aim_up_loc',mo = True)
            cmds.scaleConstraint('world_ctrl','r_bendy_arm_01_ctrl_grp',mo = True)
            cmds.scaleConstraint('world_ctrl','r_bendy_arm_02_ctrl_grp',mo = True)
            cmds.scaleConstraint('world_ctrl','r_bendy_arm_03_ctrl_grp',mo = True)
            
            createNode = [('multiplyDivide','r_bendy_arm_twist_mult'),('multiplyDivide','l_upr_bendy_arm_stretch_01_mult'),('multiplyDivide','l_upr_bendy_arm_stretch_02_mult'),('multiplyDivide','l_lwr_bendy_arm_stretch_01_mult'),('multiplyDivide','l_lwr_bendy_arm_stretch_02_mult'),('multiplyDivide','r_upr_bendy_arm_stretch_01_mult'),('multiplyDivide','r_upr_bendy_arm_stretch_02_mult'),('multiplyDivide','r_lwr_bendy_arm_stretch_01_mult'),('multiplyDivide','r_lwr_bendy_arm_stretch_02_mult')]
            for each in createNode:
                cmds.shadingNode(each[0],n=each[1],asUtility=1)
                
            toSetNode = [('r_bendy_arm_twist_mult.input2Y',-1),('r_bendy_arm_twist_mult.input2X',-1),('l_upr_bendy_arm_stretch_01_mult.operation',2),('l_upr_bendy_arm_stretch_01_mult.operation',2),('l_lwr_bendy_arm_stretch_01_mult.operation',2),('l_lwr_bendy_arm_stretch_01_mult.operation',2),('l_upr_bendy_arm_stretch_01_mult.operation',2),('r_upr_bendy_arm_stretch_01_mult.operation',2),('r_lwr_bendy_arm_stretch_01_mult.operation',2),('r_lwr_bendy_arm_stretch_01_mult.operation',2)]
            for each in toSetNode:
                cmds.setAttr(each[0],each[1])
        
            uprArmCurveInfo = cmds.arclen('l_upr_bendy_arm_crv',ch = True)
            cmds.rename(uprArmCurveInfo,'l_upr_bendy_arm_crv_info')
            lwrArmCurveInfo = cmds.arclen('l_lwr_bendy_arm_crv',ch = True)
            cmds.rename(lwrArmCurveInfo,'l_lwr_bendy_arm_crv_info')
            uprArmCurveInfo = cmds.arclen('r_upr_bendy_arm_crv',ch = True)
            cmds.rename(uprArmCurveInfo,'r_upr_bendy_arm_crv_info')
            lwrArmCurveInfo = cmds.arclen('r_lwr_bendy_arm_crv',ch = True)
            cmds.rename(lwrArmCurveInfo,'r_lwr_bendy_arm_crv_info')    
            
            toConnectAttr = [('r_arm_03_bln_jnt.rotateX','r_bendy_arm_twist_mult.input1Y'),('r_arm_02_bln_jnt.rotateX','r_bendy_arm_twist_mult.input1X'),('r_bendy_arm_twist_mult.outputX','r_upr_bendy_arm_ikh.twist'),('r_bendy_arm_twist_mult.outputY','r_lwr_bendy_arm_ikh.twist'),('l_arm_02_bln_jnt.rotateX','l_upr_bendy_arm_ikh.twist'),('l_upr_bendy_arm_crv_info.arcLength','l_upr_bendy_arm_stretch_01_mult.input1X'),('l_upr_bendy_arm_stretch_01_mult.outputX','l_upr_bendy_arm_stretch_02_mult.input1X'),('l_upr_bendy_arm_02_length_jnt.translateX','l_upr_bendy_arm_stretch_02_mult.input2X'),('l_upr_bendy_arm_stretch_02_mult.outputX','l_upr_bendy_arm_02_jnt.translateX'),('l_upr_bendy_arm_stretch_02_mult.outputX','l_upr_bendy_arm_03_jnt.translateX'),('l_upr_bendy_arm_stretch_02_mult.outputX','l_upr_bendy_arm_04_jnt.translateX'),('l_upr_bendy_arm_stretch_02_mult.outputX','l_upr_bendy_arm_05_jnt.translateX'),('l_upr_bendy_arm_end_length_jnt.translateX','l_upr_bendy_arm_stretch_01_mult.input2X'),('l_arm_03_bln_jnt.rotateX','l_lwr_bendy_arm_ikh.twist'),('l_lwr_bendy_arm_crv_info.arcLength','l_lwr_bendy_arm_stretch_01_mult.input1X'),('l_lwr_bendy_arm_stretch_01_mult.outputX','l_lwr_bendy_arm_stretch_02_mult.input1X'),('l_lwr_bendy_arm_02_length_jnt.translateX','l_lwr_bendy_arm_stretch_02_mult.input2X'),('l_lwr_bendy_arm_stretch_02_mult.outputX','l_lwr_bendy_arm_02_jnt.translateX'),('l_lwr_bendy_arm_stretch_02_mult.outputX','l_lwr_bendy_arm_03_jnt.translateX'),('l_lwr_bendy_arm_stretch_02_mult.outputX','l_lwr_bendy_arm_04_jnt.translateX'),('l_lwr_bendy_arm_stretch_02_mult.outputX','l_lwr_bendy_arm_05_jnt.translateX'),('l_lwr_bendy_arm_end_length_jnt.translateX','l_lwr_bendy_arm_stretch_01_mult.input2X'),('r_upr_bendy_arm_crv_info.arcLength','r_upr_bendy_arm_stretch_01_mult.input1X'),('r_upr_bendy_arm_stretch_01_mult.outputX','r_upr_bendy_arm_stretch_02_mult.input1X'),('r_upr_bendy_arm_02_length_jnt.translateX','r_upr_bendy_arm_stretch_02_mult.input2X'),('r_upr_bendy_arm_stretch_02_mult.outputX','r_upr_bendy_arm_02_jnt.translateX'),('r_upr_bendy_arm_stretch_02_mult.outputX','r_upr_bendy_arm_03_jnt.translateX'),('r_upr_bendy_arm_stretch_02_mult.outputX','r_upr_bendy_arm_04_jnt.translateX'),('r_upr_bendy_arm_stretch_02_mult.outputX','r_upr_bendy_arm_05_jnt.translateX'),('r_upr_bendy_arm_end_length_jnt.translateX','r_upr_bendy_arm_stretch_01_mult.input2X'),('r_lwr_bendy_arm_crv_info.arcLength','r_lwr_bendy_arm_stretch_01_mult.input1X'),('r_lwr_bendy_arm_stretch_01_mult.outputX','r_lwr_bendy_arm_stretch_02_mult.input1X'),('r_lwr_bendy_arm_02_length_jnt.translateX','r_lwr_bendy_arm_stretch_02_mult.input2X'),('r_lwr_bendy_arm_stretch_02_mult.outputX','r_lwr_bendy_arm_02_jnt.translateX'),('r_lwr_bendy_arm_stretch_02_mult.outputX','r_lwr_bendy_arm_03_jnt.translateX'),('r_lwr_bendy_arm_stretch_02_mult.outputX','r_lwr_bendy_arm_04_jnt.translateX'),('r_lwr_bendy_arm_stretch_02_mult.outputX','r_lwr_bendy_arm_05_jnt.translateX'),('r_lwr_bendy_arm_end_length_jnt.translateX','r_lwr_bendy_arm_stretch_01_mult.input2X')]
            for each in toConnectAttr:
                cmds.connectAttr(each[0],each[1])
                
            list = ['l_upr_bendy_arm_ik_setup_grp','r_upr_bendy_arm_ik_setup_grp','l_lwr_bendy_arm_ik_setup_grp','r_lwr_bendy_arm_ik_setup_grp','arm_bendy_setup_grp']
            for each in list:
                cmds.group(n=each,em=True)
                
            list = [('l_upr_bendy_arm_ik_setup_grp','arm_bendy_setup_grp'),('r_upr_bendy_arm_ik_setup_grp','arm_bendy_setup_grp'),('l_lwr_bendy_arm_ik_setup_grp','arm_bendy_setup_grp'),('r_lwr_bendy_arm_ik_setup_grp','arm_bendy_setup_grp'),('l_upr_bendy_arm_loc_grp','arm_bendy_setup_grp'),('l_lwr_bendy_arm_loc_grp','arm_bendy_setup_grp'),('r_upr_bendy_arm_loc_grp','arm_bendy_setup_grp'),('r_lwr_bendy_arm_loc_grp','arm_bendy_setup_grp'),('l_bendy_arm_ctrl_grp','world_ctrl'),('r_bendy_arm_ctrl_grp','world_ctrl'),('l_upr_bendy_arm_crv','l_upr_bendy_arm_ik_setup_grp'),('l_upr_bendy_arm_ikh','l_upr_bendy_arm_ik_setup_grp'),('l_lwr_bendy_arm_crv','l_lwr_bendy_arm_ik_setup_grp'),('l_lwr_bendy_arm_ikh','l_lwr_bendy_arm_ik_setup_grp'),('r_upr_bendy_arm_crv','r_upr_bendy_arm_ik_setup_grp'),('r_upr_bendy_arm_ikh','r_upr_bendy_arm_ik_setup_grp'),('r_lwr_bendy_arm_crv','r_lwr_bendy_arm_ik_setup_grp'),('r_lwr_bendy_arm_ikh','r_lwr_bendy_arm_ik_setup_grp')]
            for each in list:
                cmds.parent(each[0],each[1])
 
        bendyArmIKsetup()
        
        def ArmStretchSetup(side):
            ####armStretchsetup####
            jointList = ['%s_arm_01_length_jnt'%(side),'%s_arm_02_length_jnt'%(side),'%s_arm_03_length_jnt'%(side)]
            for each in jointList:
                cmds.joint(n=each)
            cmds.group(n='%s_arm_length_jnt_grp'%(side),em=True)
            cmds.parent('%s_arm_01_length_jnt'%(side),'%s_arm_length_jnt_grp'%(side))
            cmds.scaleConstraint('world_ctrl','%s_arm_length_jnt_grp'%(side),mo=True)
            
            listOfToGetJointPos = [('%s_arm_01_setup'%(side),'%s_arm_01_length_jnt'%(side)),('%s_arm_02_setup'%(side),'%s_arm_02_length_jnt'%(side)),('%s_arm_03_setup'%(side),'%s_arm_03_length_jnt'%(side))]
            for each in listOfToGetJointPos:
                forDel = cmds.parentConstraint(each[0],each[1],mo=False)
                cmds.delete(forDel)
            
            list = [('distanceBetween','%s_upr_arm_dist'%(side)),('distanceBetween','%s_lwr_arm_dist'%(side)),('addDoubleLinear','%s_arm_full_dist'%(side)),('distanceBetween','%s_arm_stretch_dist'%(side)),('condition','%s_arm_stretch_cond'%(side)),('multiplyDivide','%s_upr_arm_strecth_mult'%(side)),('multiplyDivide','%s_arm_stretch_mult'%(side)),('multiplyDivide','%s_lwr_arm_strecth_mult'%(side)),('multiplyDivide','%s_arm_strecth_option_mult'%(side))]
            for each in list:
                cmds.shadingNode(each[0],n=each[1],asUtility=1)
                
            cmds.spaceLocator(n = '%s_arm_start_dist_loc'%(side))
            cmds.group(n='%s_arm_start_dist_loc_grp'%(side))
            cmds.scaleConstraint('world_ctrl','%s_arm_start_dist_loc_grp'%(side),mo=True)
            parentarmstartdistloc = cmds.pointConstraint('%s_ik_01_jnt'%(side),'%s_arm_start_dist_loc'%(side),mo = False)
            cmds.delete(parentarmstartdistloc)
            cmds.parentConstraint('%s_shoulder_ctrl'%(side),'%s_arm_start_dist_loc'%(side),mo=True)
            cmds.spaceLocator(n = '%s_arm_end_dist_loc'%(side))
            cmds.setAttr('%s_arm_end_dist_loc.visibility'%(side),0)
            parent_arm_end_dist_loc = cmds.pointConstraint('%s_ik_03_jnt'%(side),'%s_arm_end_dist_loc'%(side))
            cmds.delete(parent_arm_end_dist_loc)
            cmds.parent('%s_arm_end_dist_loc'%(side),'%s_ik_arm_ctrl'%(side))
            cmds.setAttr('%s_arm_stretch_cond.operation'%(side),2)
            cmds.setAttr('%s_arm_stretch_mult.operation'%(side),2)
            cmds.setAttr('%s_arm_strecth_option_mult.input2X'%(side),2)
            
            list = [('%s_arm_01_length_jnt.worldMatrix'%(side),'%s_upr_arm_dist.inMatrix1'%(side)),('%s_arm_02_length_jnt.worldMatrix'%(side),'%s_upr_arm_dist.inMatrix2'%(side)),('%s_arm_02_length_jnt.worldMatrix'%(side),'%s_lwr_arm_dist.inMatrix1'%(side)),('%s_arm_03_length_jnt.worldMatrix'%(side),'%s_lwr_arm_dist.inMatrix2'%(side)),('%s_upr_arm_dist.distance'%(side),'%s_arm_full_dist.input1'%(side)),('%s_lwr_arm_dist.distance'%(side),'%s_arm_full_dist.input2'%(side)),('%s_arm_start_dist_loc.worldMatrix'%(side),'%s_arm_stretch_dist.inMatrix1'%(side)),('%s_arm_end_dist_loc.worldMatrix'%(side),'%s_arm_stretch_dist.inMatrix2'%(side)),('%s_arm_stretch_dist.distance'%(side),'%s_arm_stretch_cond.firstTerm'%(side)),('%s_arm_full_dist.output'%(side),'%s_arm_stretch_cond.secondTerm'%(side)),('%s_arm_stretch_dist.distance'%(side),'%s_arm_stretch_mult.input1X'%(side)),('%s_arm_full_dist.output'%(side),'%s_arm_stretch_mult.input2X'%(side)),('%s_arm_stretch_mult.outputX'%(side),'%s_arm_stretch_cond.colorIfTrue.colorIfTrueR'%(side)),('%s_arm_stretch_cond.outColor.outColorR'%(side),'%s_lwr_arm_strecth_mult.input1X'%(side)),('%s_arm_stretch_cond.outColor.outColorR'%(side),'%s_upr_arm_strecth_mult.input1X'%(side)),('%s_arm_02_setup.translateX'%(side),'%s_upr_arm_strecth_mult.input2X'%(side)),('%s_arm_03_setup.translateX'%(side),'%s_lwr_arm_strecth_mult.input2X'%(side)),('%s_upr_arm_strecth_mult.outputX'%(side),'%s_ik_02_jnt.translateX'%(side)),('%s_lwr_arm_strecth_mult.outputX'%(side),'%s_ik_03_jnt.translateX'%(side)),('%s_ik_arm_ctrl.stretch'%(side),'%s_arm_strecth_option_mult.input1X'%(side)),('%s_arm_strecth_option_mult.outputX'%(side),'%s_arm_stretch_cond.operation'%(side))]
            for each in list:
                cmds.connectAttr(each[0],each[1])
            # the command to change the progress bar
            cmds.progressBar('EugenesProgressBar', edit=True, step=1)
            
        ArmStretchSetup('l')
        ArmStretchSetup('r')
        
        def armGroup():
            list = ['l_arm_jnt_grp','r_arm_jnt_grp','arm_jnt_grp']
            for each in list:
                cmds.group(n=each,em=True)
            list = [('l_ik_arm_jnt_grp','l_arm_jnt_grp'),('r_ik_arm_jnt_grp','r_arm_jnt_grp'),('l_fk_arm_01_jnt','l_arm_jnt_grp'),('r_fk_arm_01_jnt','r_arm_jnt_grp'),('r_bendy_arm_jnt_grp','r_arm_jnt_grp'),('l_bendy_arm_jnt_grp','l_arm_jnt_grp'),('r_arm_length_jnt_grp','r_arm_jnt_grp'),('l_arm_length_jnt_grp','l_arm_jnt_grp'),('r_shoulder_jnt','r_arm_jnt_grp'),('l_shoulder_jnt','l_arm_jnt_grp'),('r_arm_bln_jnt_grp','r_arm_jnt_grp'),('l_arm_bln_jnt_grp','l_arm_jnt_grp'),('l_arm_jnt_grp','arm_jnt_grp'),('r_arm_jnt_grp','arm_jnt_grp')]
            for each in list:
                cmds.parent(each[0],each[1])
        
        armGroup()
        
    def noBendyArm():
        def FKarmSetup(side):
            #FKarm#
            fkarmcontroller = [('%s_fk_arm_01_ctrl'%(side),'%s_fk_arm_01_ctrl_grp'%(side)),('%s_fk_arm_02_ctrl'%(side),'%s_fk_arm_02_ctrl_grp'%(side)),('%s_fk_arm_03_ctrl'%(side),'%s_fk_arm_03_ctrl_grp'%(side))]
            for each in fkarmcontroller:
                cmds.curve(d=1,p=[(0.0, 1.8457071003629746, -6.888272674590291),(0.0, 1.6065215981349992, -5.995620227271308),(0.0, -1.6065234643869502, -5.995624729951774),(0.0, -1.8454397435472047, -6.8872682416730004),(0.0, -5.041829388107622, -5.041831819868864),(0.0, -4.389101595742385, -4.389102497134237),(0.0, -5.995620227271308, -1.6065215981349992),(0.0, -6.888272674590291, -1.8457071003629746),(0.0, -6.8872682416730004, 1.8454397435472047),(0.0, -5.995624729951774, 1.6065234643869502),(0.0, -4.389102497134237, 4.389101595742385),(0.0, -5.041831819868864, 5.041829388107622),(0.0, -1.8457071003629746, 6.888272674590291),(0.0, -1.6065215981349992, 5.995620227271308),(0.0, 1.6065234643869502, 5.995624729951774),(0.0, 1.8454397435472047, 6.8872682416730004),(0.0, 5.041829388107622, 5.041831819868864),(0.0, 4.389101595742385, 4.389102497134237),(0.0, 5.995620227271308, 1.6065215981349992),(0.0, 6.888272674590291, 1.8457071003629746),(0.0, 6.8872682416730004, -1.8454397435472047),(0.0, 5.995624729951774, -1.6065234643869502),(0.0, 4.389102497134237, -4.389101595742385),(0.0, 5.041831819868864, -5.041829388107622),(0.0, 1.8457071003629746, -6.888272674590291)])
                cmds.rename(each[0])
                cmds.group(n=each[1])
                
            createjoint = ['%s_fk_arm_01_jnt'%(side),'%s_fk_arm_02_jnt'%(side),'%s_fk_arm_03_jnt'%(side)]
            for each in createjoint:
                cmds.joint(n=each)
                
            toGetJntPos = ('%s_arm_01_setup'%(side),'%s_fk_arm_01_jnt'%(side)),('%s_arm_02_setup'%(side),'%s_fk_arm_02_jnt'%(side)),('%s_arm_03_setup'%(side),'%s_fk_arm_03_jnt'%(side))
            for each in toGetJntPos:
                forDel = cmds.parentConstraint(each[0],each[1])
                cmds.delete(forDel)
            cmds.parent('%s_fk_arm_01_jnt'%(side),w=True)
                
            toGetCtrlPos = [('%s_arm_01_setup'%(side),'%s_fk_arm_01_ctrl_grp'%(side)),('%s_arm_02_setup'%(side),'%s_fk_arm_02_ctrl_grp'%(side)),('%s_arm_03_setup'%(side),'%s_fk_arm_03_ctrl_grp'%(side))]
            for each in toGetCtrlPos:
                forDel = cmds.parentConstraint(each[0],each[1])
                cmds.delete(forDel)
            
            toParent = [('%s_fk_arm_02_ctrl_grp'%(side),'%s_fk_arm_01_ctrl'%(side)),('%s_fk_arm_03_ctrl_grp'%(side),'%s_fk_arm_02_ctrl'%(side))]
            for each in toParent:
                cmds.parent(each[0],each[1])
                
            toParentCon = [('%s_shoulder_ctrl'%(side),'%s_fk_arm_01_ctrl_grp'%(side)),('%s_fk_arm_01_ctrl'%(side),'%s_fk_arm_01_jnt'%(side)),('%s_fk_arm_02_ctrl'%(side),'%s_fk_arm_02_jnt'%(side)),('%s_fk_arm_03_ctrl'%(side),'%s_fk_arm_03_jnt'%(side))]
            for each in toParentCon:
                cmds.parentConstraint(each[0],each[1],mo=True)
                
            toLockAttr = [('%s_fk_arm_01_ctrl'%(side)),('%s_fk_arm_02_ctrl'%(side)),('%s_fk_arm_03_ctrl'%(side))]
            for each in toLockAttr:
                cmds.setAttr (each+'.visibility',keyable = False, cb = False, lock = True)
                cmds.setAttr (each+'.scaleX',keyable = False, cb = False, lock = True)
                cmds.setAttr (each+'.scaleY',keyable = False, cb = False, lock = True)
                cmds.setAttr (each+'.scaleZ',keyable = False, cb = False, lock = True)
                cmds.setAttr (each+'.overrideEnabled' ,True) 
                cmds.setAttr (each+'.overrideColor' ,6)
            
        FKarmSetup('l')
        FKarmSetup('r')
        
        def IKarmSetup(side):
            #IKarm#
            cmds.joint(n='%s_ik_01_jnt'%(side))
            forDel = cmds.parentConstraint('%s_arm_01_setup'%(side),'%s_ik_01_jnt'%(side),mo = False)
            deleteparent = cmds.delete(forDel)
            cmds.joint(n='%s_ik_02_jnt'%(side))
            forDel = cmds.parentConstraint('%s_arm_02_setup'%(side),'%s_ik_02_jnt'%(side),mo = False)
            deleteparent = cmds.delete(forDel)
            cmds.joint(n='%s_ik_03_jnt'%(side))
            forDel = cmds.parentConstraint('%s_arm_03_setup'%(side),'%s_ik_03_jnt'%(side),mo = False)
            deleteparent = cmds.delete(forDel)
            cmds.makeIdentity( '%s_ik_01_jnt'%(side), apply=True, translate=True, rotate=True)
            cmds.parentConstraint('%s_shoulder_ctrl'%(side),'%s_ik_01_jnt'%(side),mo=True)
            cmds.ikHandle( n='%s_arm_ikh'%(side), sj='%s_ik_01_jnt'%(side), ee='%s_ik_03_jnt'%(side) )
            cmds.setAttr('%s_arm_ikh.visibility'%(side),0)
            cmds.curve(d=1, p=[(-5, -5, 5),(-5, 5, 5),(5, 5, 5),(5, -5, 5),(5, -5, -5),(5, 5, -5),(-5, 5, -5),(-5, -5, -5),(-5, -5, 5),(5, -5, 5),(5, 5, 5),(5, 5, -5),(5, -5, -5),(-5, -5, -5),(-5, 5, -5),(-5, 5, 5)])
            cmds.rename('%s_ik_arm_ctrl'%(side))
            ControllerAttr('%s_ik_arm_ctrl'%(side),False,False,False,False,True,True,True,True,True,True,True,False,False,False,True,6,True,True,True,False,False,False)
            cmds.addAttr('%s_ik_arm_ctrl'%(side),sn='stretch',at = 'bool',k=1)
            cmds.addAttr('%s_ik_arm_ctrl'%(side), at = 'enum', keyable=True, en = 'string1:string2:', ln='follow') 
            cmds.addAttr('%s_ik_arm_ctrl'%(side)+'.follow', e=True, en = 'world:shoulder:')
            cmds.orientConstraint('%s_ik_arm_ctrl'%(side), '%s_ik_03_jnt'%(side))
            cmds.group(n='%s_ik_arm_ctrl_grp'%(side))
            forDel = cmds.parentConstraint('%s_arm_03_setup'%(side),'%s_ik_arm_ctrl_grp'%(side),mo = False)
            deleteparent = cmds.delete(forDel)
            cmds.parentConstraint('%s_shoulder_ctrl'%(side),'%s_ik_arm_ctrl_grp'%(side),mo = True)
            cmds.connectAttr('%s_ik_arm_ctrl.follow'%(side),'%s_ik_arm_ctrl_grp_parentConstraint1.%s_shoulder_ctrlW0'%(side,side))
            cmds.parent('%s_arm_ikh'%(side), '%s_ik_arm_ctrl'%(side))
            cmds.parent('%s_ik_arm_ctrl_grp'%(side),'world_ctrl')
            cmds.curve(d=1, p=[(0.0, 3.468342867164149, 0.0),(0.0, 3.468342867164149, 0.5221724371834184),(0.0, 4.967930096687364, 0.0),(0.5221724371834184, 3.468342867164149, 0.0),(-0.5221724371834184, 3.468342867164149, 0.0),(0.0, 4.967930096687364, 0.0),(0.0, 3.468342867164149, -0.5221724371834184),(0.0, 3.468342867164149, 0.0),(0.0, -3.468342867164149, 0.0),(-0.5221724371834184, -3.468342867164149, 0.0),(0.0, -4.967930096687364, 0.0),(0.0, -3.468342867164149, -0.5221724371834184),(0.0, -3.468342867164149, 0.5221724371834184),(0.0, -4.967930096687364, 0.0),(0.5221724371834184, -3.468342867164149, 0.0),(0.0, -3.468342867164149, 0.0),(0.0, 0.0, 0.0),(-3.468342867164149, 0.0, 0.0),(-3.468342867164149, 0.5221724371834184, 0.0),(-4.967930096687364, 0.0, 0.0),(-3.468342867164149, 0.0, -0.5221724371834184),(-3.468342867164149, 0.0, 0.5221724371834184),(-4.967930096687364, 0.0, 0.0),(-3.468342867164149, -0.5221724371834184, 0.0),(-3.468342867164149, 0.0, 0.0),(3.468342867164149, 0.0, 0.0),(3.468342867164149, 0.0, -0.5221724371834184),(4.967930096687364, 0.0, 0.0),(3.468342867164149, 0.5221724371834184, 0.0),(3.468342867164149, -0.5221724371834184, 0.0),(4.967930096687364, 0.0, 0.0),(3.468342867164149, 0.0, 0.5221724371834184),(3.468342867164149, 0.0, 0.0),(0.0, 0.0, 0.0),(0.0, 0.0, 3.468342867164149),(0.0, 0.5221724371834184, 3.468342867164149),(0.0, 0.0, 4.967930096687364),(0.5221724371834184, 0.0, 3.468342867164149),(-0.5221724371834184, 0.0, 3.468342867164149),(0.0, 0.0, 4.967930096687364),(0.0, -0.5221724371834184, 3.468342867164149),(0.0, 0.0, 3.468342867164149),(0.0, 0.0, -3.468342867164149),(0.0, 0.5221724371834184, -3.468342867164149),(0.0, 0.0, -4.967930096687364),(-0.5221724371834184, 0.0, -3.468342867164149),(0.5221724371834184, 0.0, -3.468342867164149),(0.0, 0.0, -4.967930096687364),(0.0, -0.5221724371834184, -3.468342867164149),(0.0, 0.0, -3.468342867164149),(0.0, 0.0, -3.468342867164149),(0.0, 0.0, -3.468342867164149),(0.0, 0.0, -3.468342867164149)])
            cmds.rename('%s_elbow_ctrl'%(side))
            ControllerAttr('%s_elbow_ctrl'%(side),False,False,False,False,False,False,False,True,True,True,True,True,True,True,True,6,True,True,True,False,False,False)
            cmds.addAttr('%s_elbow_ctrl'%(side),sn='follow', min = 0, max=1 ,k=1)
            cmds.group()
            cmds.rename('%s_elbow_ctrl_grp'%(side))
            cmds.parent('%s_elbow_ctrl_grp'%(side),'world_ctrl')
            forDel = cmds.pointConstraint('%s_elbow_setup'%(side), '%s_elbow_ctrl_grp'%(side))
            deparent = cmds.delete(forDel)
            cmds.poleVectorConstraint( '%s_elbow_ctrl'%(side), '%s_arm_ikh'%(side) )
            cmds.spaceLocator()
            cmds.rename('%s_elbow_loc_world'%(side))
            forDel = cmds.parentConstraint('%s_elbow_setup'%(side),'%s_elbow_loc_world'%(side))
            cmds.delete(forDel)
            cmds.spaceLocator()
            cmds.rename('%s_elbow_loc_follow'%(side))
            forDel = cmds.parentConstraint('%s_elbow_setup'%(side),'%s_elbow_loc_follow'%(side))
            cmds.delete(forDel)
            cmds.group()
            cmds.rename('%s_elbow_loc_grp'%(side))
            cmds.parent('%s_elbow_loc_world'%(side),'%s_elbow_loc_grp'%(side))
            cmds.parentConstraint('%s_ik_arm_ctrl'%(side),'%s_elbow_loc_follow'%(side),mo = True)
            cmds.parentConstraint('%s_elbow_loc_follow'%(side),'%s_elbow_ctrl_grp'%(side),mo = True)
            cmds.parentConstraint('%s_elbow_loc_world'%(side),'%s_elbow_ctrl_grp'%(side),mo = True)
            cmds.parentConstraint('world_ctrl','%s_elbow_loc_world'%(side),mo = True)
            cmds.shadingNode('reverse',n = '%s_elbow_rev'%(side),asUtility=1)
            cmds.connectAttr('%s_elbow_ctrl.follow'%(side), '%s_elbow_ctrl_grp_parentConstraint1.%s_elbow_loc_followW0'%(side,side))
            cmds.connectAttr('%s_elbow_ctrl.follow'%(side), '%s_elbow_rev.inputX'%(side))
            cmds.connectAttr('%s_elbow_rev.outputX'%(side), '%s_elbow_ctrl_grp_parentConstraint1.%s_elbow_loc_worldW1'%(side,side))
            cmds.group(n='%s_ik_arm_jnt_grp'%(side),em=True)
            cmds.parent('%s_ik_01_jnt'%(side),'%s_ik_arm_jnt_grp'%(side))
            cmds.scaleConstraint('world_ctrl','%s_ik_arm_jnt_grp'%(side),mo=True)
            #IKarmPVcrv#
            cmds.curve(d=1, p=[(0, 0, 0),(0, 10, 0)])
            cmds.rename('%s_elbow_direction_crv'%(side))
            nameOfLoc = ['%s_elbow_01_loc'%(side),'%s_elbow_02_loc'%(side)]
            for each in nameOfLoc:
                cmds.spaceLocator(n=each)
        
            toGetLocPos = [('%s_elbow_01_loc.translateY'%(side),0),('%s_elbow_02_loc.translateY'%(side),10)]
            for each in toGetLocPos:
                cmds.setAttr(each[0],each[1])
    
            toConnectLoc = [('%s_elbow_01_loc.worldPosition[0]'%(side),'%s_elbow_direction_crvShape.controlPoints[0]'%(side)),('%s_elbow_02_loc.worldPosition[0]'%(side),'%s_elbow_direction_crvShape.controlPoints[4]'%(side))]
            for each in toConnectLoc:
                cmds.connectAttr(each[0],each[1])
            toSetAttr = [('%s_elbow_direction_crv.overrideEnabled'%(side),1),('%s_elbow_direction_crv.overrideDisplayType'%(side),2),('%s_elbow_01_loc.visibility'%(side),0),('%s_elbow_02_loc.visibility'%(side),0)]
            for each in toSetAttr:
                cmds.setAttr(each[0],each[1])
            
            toGetParent = [('%s_elbow_ctrl'%(side),'%s_elbow_01_loc'%(side)),('%s_ik_02_jnt'%(side),'%s_elbow_02_loc'%(side))]
            for each in toGetParent:
                cmds.parentConstraint(each[0],each[1],mo = False)
            
            cmds.group(n='%s_elbow_direction_crv_grp'%(side),em = True)
            toGetParent = [('%s_elbow_01_loc'%(side),'%s_elbow_direction_crv_grp'%(side)),('%s_elbow_02_loc'%(side),'%s_elbow_direction_crv_grp'%(side)),('%s_elbow_direction_crv'%(side),'%s_elbow_direction_crv_grp'%(side))]
            for each in toGetParent:
                cmds.parent(each[0],each[1])
                
        IKarmSetup('l')
        IKarmSetup('r')
    
        def IKFKarmSetup(side):
            nameOfJoint = [('%s_arm_01_bln_jnt'%(side)),('%s_arm_02_bln_jnt'%(side)),('%s_arm_03_bln_jnt'%(side))]
            for each in nameOfJoint:
                cmds.joint(n=each)
            
            cmds.group(n='%s_arm_bln_jnt_grp'%(side),em=True)
            cmds.parent('%s_arm_01_bln_jnt'%(side),'%s_arm_bln_jnt_grp'%(side))
            cmds.scaleConstraint('world_ctrl','%s_arm_bln_jnt_grp'%(side),mo=True)
            
            toGetPos = [('%s_arm_01_setup'%(side), '%s_arm_01_bln_jnt'%(side)),('%s_arm_02_setup'%(side),'%s_arm_02_bln_jnt'%(side)),('%s_arm_03_setup'%(side),'%s_arm_03_bln_jnt'%(side))]
            for each in toGetPos:
                forDel = cmds.parentConstraint(each[0],each[1],mo = False)
                cmds.delete(forDel)
                
            cmds.setAttr('%s_arm_01_bln_jnt.drawStyle'%(side),2)
            cmds.setAttr('%s_arm_02_bln_jnt.drawStyle'%(side),2)
            cmds.makeIdentity( '%s_arm_01_bln_jnt'%(side),apply=True, rotate=True)
            
            toParentCon = [('%s_fk_arm_01_jnt'%(side),'%s_arm_01_bln_jnt'%(side)),('%s_ik_01_jnt'%(side), '%s_arm_01_bln_jnt'%(side)),('%s_fk_arm_02_jnt'%(side), '%s_arm_02_bln_jnt'%(side)),('%s_ik_02_jnt'%(side), '%s_arm_02_bln_jnt'%(side)),('%s_fk_arm_03_jnt'%(side), '%s_arm_03_bln_jnt'%(side)),('%s_ik_03_jnt'%(side), '%s_arm_03_bln_jnt'%(side))]
            for each in toParentCon:
                cmds.parentConstraint(each[0],each[1],mo = True)
                
            cmds.curve(d=1, p=[(1.25, 0, 7.5),(-1.25, 0, 7.5),(-1.25, 0, 1.25),(-7.5, 0, 1.25),(-7.5, 0, -1.25),(-1.25, 0, -1.25),(-1.25, 0, -7.5),(1.25, 0 ,-7.5),(1.25, 0, -1.25),(7.5, 0, -1.25),(7.5, 0, 1.25,),(1.25, 0 ,1.25),(1.25, 0, 7.5)])
            cmds.rename('%s_ik_fk_switch'%(side))
            ControllerAttr('%s_ik_fk_switch'%(side),False,False,False,False,False,False,False,True,True,True,True,True,True,True,True,15,False,False,False,True,True,True)
            cmds.group(n='%s_ik_fk_switch_grp'%(side))
            cmds.parent('%s_ik_fk_switch_grp'%(side), 'world_ctrl')
            cmds.addAttr('%s_ik_fk_switch'%(side),sn='IKFK', min = 0, max=1 ,k=1,dv=1)
            cmds.addAttr('%s_ik_fk_switch'%(side),sn='bendyVis',at = 'bool',k=1)
            cmds.addAttr('%s_ik_fk_switch'%(side),sn='thumbCurl',k=1)
            cmds.addAttr('%s_ik_fk_switch'%(side),sn='indexCurl',k=1)
            cmds.addAttr('%s_ik_fk_switch'%(side),sn='middleCurl',k=1)
            cmds.addAttr('%s_ik_fk_switch'%(side),sn='ringCurl',k=1)
            cmds.addAttr('%s_ik_fk_switch'%(side),sn='pinkyCurl',k=1)
            cmds.parentConstraint('%s_arm_03_bln_jnt'%(side), '%s_ik_fk_switch_grp'%(side))
            cmds.shadingNode('reverse',n = '%s_arm_ik_rev'%(side),asUtility=1)
            
            toConnectAttr = [('%s_ik_fk_switch.IKFK'%(side),'%s_arm_03_bln_jnt_parentConstraint1.%s_fk_arm_03_jntW0'%(side,side)),('%s_ik_fk_switch.IKFK'%(side),'%s_arm_02_bln_jnt_parentConstraint1.%s_fk_arm_02_jntW0'%(side,side)),('%s_ik_fk_switch.IKFK'%(side),'%s_arm_01_bln_jnt_parentConstraint1.%s_fk_arm_01_jntW0'%(side,side)),('%s_ik_fk_switch.IKFK'%(side),'%s_arm_ik_rev.inputX'%(side)),('%s_arm_ik_rev.outputX'%(side),'%s_arm_03_bln_jnt_parentConstraint1.%s_ik_03_jntW1'%(side,side)),('%s_arm_ik_rev.outputX'%(side),'%s_arm_02_bln_jnt_parentConstraint1.%s_ik_02_jntW1'%(side,side)),('%s_arm_ik_rev.outputX'%(side),'%s_arm_01_bln_jnt_parentConstraint1.%s_ik_01_jntW1'%(side,side)),('%s_ik_fk_switch.IKFK'%(side),'%s_fk_arm_01_ctrl_grp.visibility'%(side)),('%s_arm_ik_rev.outputX'%(side),'%s_ik_arm_ctrl_grp.visibility'%(side)),('%s_arm_ik_rev.outputX'%(side),'%s_elbow_ctrl_grp.visibility'%(side)),('%s_arm_ik_rev.outputX'%(side),'%s_elbow_direction_crv_grp.visibility'%(side))]
            for each in toConnectAttr:
                cmds.connectAttr(each[0],each[1])
            
        IKFKarmSetup('l')
        IKFKarmSetup('r')
        
        def ArmStretchSetup(side):
            jointList = ['%s_arm_01_length_jnt'%(side),'%s_arm_02_length_jnt'%(side),'%s_arm_03_length_jnt'%(side)]
            for each in jointList:
                cmds.joint(n=each)
            cmds.group(n='%s_arm_length_jnt_grp'%(side),em=True)
            cmds.parent('%s_arm_01_length_jnt'%(side),'%s_arm_length_jnt_grp'%(side))
            cmds.scaleConstraint('world_ctrl','%s_arm_length_jnt_grp'%(side),mo=True)
            
            listOfToGetJointPos = [('%s_arm_01_setup'%(side),'%s_arm_01_length_jnt'%(side)),('%s_arm_02_setup'%(side),'%s_arm_02_length_jnt'%(side)),('%s_arm_03_setup'%(side),'%s_arm_03_length_jnt'%(side))]
            for each in listOfToGetJointPos:
                forDel = cmds.parentConstraint(each[0],each[1],mo=False)
                cmds.delete(forDel)
            
            list = [('distanceBetween','%s_upr_arm_dist'%(side)),('distanceBetween','%s_lwr_arm_dist'%(side)),('addDoubleLinear','%s_arm_full_dist'%(side)),('distanceBetween','%s_arm_stretch_dist'%(side)),('condition','%s_arm_stretch_cond'%(side)),('multiplyDivide','%s_upr_arm_strecth_mult'%(side)),('multiplyDivide','%s_arm_stretch_mult'%(side)),('multiplyDivide','%s_lwr_arm_strecth_mult'%(side)),('multiplyDivide','%s_arm_strecth_option_mult'%(side))]
            for each in list:
                cmds.shadingNode(each[0],n=each[1],asUtility=1)
                
            cmds.spaceLocator(n = '%s_arm_start_dist_loc'%(side))
            cmds.group(n='%s_arm_start_dist_loc_grp'%(side))
            cmds.scaleConstraint('world_ctrl','%s_arm_start_dist_loc_grp'%(side),mo=True)
            forDel = cmds.pointConstraint('%s_ik_01_jnt'%(side),'%s_arm_start_dist_loc'%(side),mo = False)
            cmds.delete(forDel)
            cmds.parentConstraint('%s_shoulder_ctrl'%(side),'%s_arm_start_dist_loc'%(side),mo=True)
            cmds.spaceLocator(n = '%s_arm_end_dist_loc'%(side))
            cmds.setAttr('%s_arm_end_dist_loc.visibility'%(side),0)
            forDel = cmds.pointConstraint('%s_ik_03_jnt'%(side),'%s_arm_end_dist_loc'%(side))
            cmds.delete(forDel)
            cmds.parent('%s_arm_end_dist_loc'%(side),'%s_ik_arm_ctrl'%(side))
            cmds.setAttr('%s_arm_stretch_cond.operation'%(side),2)
            cmds.setAttr('%s_arm_stretch_mult.operation'%(side),2)
            cmds.setAttr('%s_arm_strecth_option_mult.input2X'%(side),2)
downloadDownload PNG downloadDownload JPEG downloadDownload SVG

Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!

Click to optimize width for Twitter