Hello, you can use the method of calling functions. My script is to set and delete key frames for the properties of curves. Now, when I call the function to delete keyframes in batches, maya will not respond for about 1 minute (when the curve is displayed in the view again). I wonder if this is caused by batch deletion or code? For curve editor, I want to know how to restore the default settings of curves instead of synchronizing from one attribute to another.
The return value of yeti curve is:setAttr"pgYetiGroom1Shape_strand_Shape165.attractionProfile[2].attractionProfile_Position" 0.455556;
setAttr "pgYetiGroom1Shape_strand_Shape165.attractionProfile[2].attractionProfile_FloatValue" 0.34;

import maya.cmds as cmds
import maya.mel as mel
import os
import shutil
def wKet():
guidesSelection = cmds.ls(sl=True, dag=True)
for each in guidesSelection:
cmds.setKeyframe(each + ".wgt")
def lwKet():
guidesSelection = cmds.ls(sl=True, dag=True)
for each in guidesSelection:
cmds.setKeyframe(each + ".lwgt")
def inr():
guidesSelection = cmds.ls(sl=True, dag=True)
for each in guidesSelection:
cmds.setKeyframe(each + ".inr")
def our():
guidesSelection = cmds.ls(sl=True, dag=True)
for each in guidesSelection:
cmds.setKeyframe(each + ".our")
def den():
guidesSelection = cmds.ls(sl=True, dag=True)
for each in guidesSelection:
cmds.setKeyframe(each + ".den")
def rat():
guidesSelection = cmds.ls(sl=True, dag=True)
for each in guidesSelection:
cmds.setKeyframe(each + ".rat")
def twt():
guidesSelection = cmds.ls(sl=True, dag=True)
for each in guidesSelection:
cmds.setKeyframe(each + ".twt")
def rdtw():
guidesSelection = cmds.ls(sl=True, dag=True)
for each in guidesSelection:
cmds.setKeyframe(each + ".rdtw")
def usf():
guidesSelection = cmds.ls(sl=True, dag=True)
for each in guidesSelection:
cmds.setKeyframe(each + ".usf")
def userVectorX():
guidesSelection = cmds.ls(sl=True, dag=True)
for each in guidesSelection:
cmds.setKeyframe(each + ".userVectorX")
def userVectorY():
guidesSelection = cmds.ls(sl=True, dag=True)
for each in guidesSelection:
cmds.setKeyframe(each + ".userVectorY")
def userVectorZ():
guidesSelection = cmds.ls(sl=True, dag=True)
for each in guidesSelection:
cmds.setKeyframe(each + ".userVectorZ")
def userF():
guidesSelection = cmds.ls(sl=True, dag=True)
userFiledV = cmds.floatField("userFloat", q=True, v=True)
xV = cmds.floatField("x", query=True, v=True)
yV = cmds.floatField("y", query=True, v=True)
zV = cmds.floatField("z", query=True, v=True)
print(userFiledV, xV, yV, zV)
for each in guidesSelection:
cmds.setAttr(each + ".userFloat", userFiledV)
cmds.setAttr(each + ".userVectorX", xV)
cmds.setAttr(each + ".userVectorY", yV)
cmds.setAttr(each + ".userVectorZ", zV)
####
def ClWeinht(o = None):
objects = cmds.ls(sl=True, dag=True)
for o in objects:
inputs = cmds.listConnections('{0}.weight'.format(o), source=True, destination=False, plugs=True)
if inputs:
for i in inputs:
cmds.disconnectAttr(i, '{0}.weight'.format(o))
def CLW(o = None):
objects = cmds.ls(sl=True, dag=True)
for o in objects:
inputs = cmds.listConnections('{0}.lengthWeight'.format(o), source=True, destination=False, plugs=True)
if inputs:
for i in inputs:
cmds.disconnectAttr(i, '{0}.lengthWeight'.format(o))
def INNER(o = None):
objects = cmds.ls(sl=True, dag=True)
for o in objects:
inputs = cmds.listConnections('{0}.innerRadius'.format(o), source=True, destination=False, plugs=True)
if inputs:
for i in inputs:
cmds.disconnectAttr(i, '{0}.innerRadius'.format(o))
def OUR(o = None):
objects = cmds.ls(sl=True, dag=True)
for o in objects:
inputs = cmds.listConnections('{0}.outerRadius'.format(o), source=True, destination=False, plugs=True)
if inputs:
for i in inputs:
cmds.disconnectAttr(i, '{0}.outerRadius'.format(o))
def DES(o = None):
objects = cmds.ls(sl=True, dag=True)
for o in objects:
inputs = cmds.listConnections('{0}.density'.format(o), source=True, destination=False, plugs=True)
if inputs:
for i in inputs:
cmds.disconnectAttr(i, '{0}.density'.format(o))
def RANA(o = None):
objects = cmds.ls(sl=True, dag=True)
for o in objects:
inputs = cmds.listConnections('{0}.randomAttraction'.format(o), source=True, destination=False, plugs=True)
if inputs:
for i in inputs:
cmds.disconnectAttr(i, '{0}.randomAttraction'.format(o))
def TWS(o = None):
objects = cmds.ls(sl=True, dag=True)
for o in objects:
inputs = cmds.listConnections('{0}.twist'.format(o), source=True, destination=False, plugs=True)
if inputs:
for i in inputs:
cmds.disconnectAttr(i, '{0}.twist'.format(o))
def RANT(o = None):
objects = cmds.ls(sl=True, dag=True)
for o in objects:
inputs = cmds.listConnections('{0}.randomTwist'.format(o), source=True, destination=False, plugs=True)
if inputs:
for i in inputs:
cmds.disconnectAttr(i, '{0}.randomTwist'.format(o))
def USEF(o = None):
objects = cmds.ls(sl=True, dag=True)
for o in objects:
inputs = cmds.listConnections('{0}.userFloat'.format(o), source=True, destination=False, plugs=True)
if inputs:
for i in inputs:
cmds.disconnectAttr(i, '{0}.userFloat'.format(o))
def USVX(o = None):
objects = cmds.ls(sl=True, dag=True)
for o in objects:
inputs = cmds.listConnections('{0}.userVectorX'.format(o), source=True, destination=False, plugs=True)
if inputs:
for i in inputs:
cmds.disconnectAttr(i, '{0}.userVectorX'.format(o))
def USVY(o = None):
objects = cmds.ls(sl=True, dag=True)
for o in objects:
inputs = cmds.listConnections('{0}.userVectorY'.format(o), source=True, destination=False, plugs=True)
if inputs:
for i in inputs:
cmds.disconnectAttr(i, '{0}.userVectorY'.format(o))
def USVZ(o = None):
objects = cmds.ls(sl=True, dag=True)
for o in objects:
inputs = cmds.listConnections('{0}.userVectorZ'.format(o), source=True, destination=False, plugs=True)
if inputs:
for i in inputs:
cmds.disconnectAttr(i, '{0}.userVectorZ'.format(o))
def reset():
print("Reset with success")
guidesSelection = cmds.ls(sl=True, dag=True)
for each in guidesSelection:
ClWeinht(o = each)
CLW(o = each)
INNER(o = each)
OUR(o = each)
DES(o = each)
RANA(o = each)
TWS(o = each)
RANT(o = each)
USEF(o = each)
USVX(o = each)
USVY(o = each)
USVZ(o = each)
############################################
if cmds.window("YetiTool", exists=True):
cmds.deleteUI("YetiTool")
cmds.window("YetiTool", t="Yetitool",
w=460, h=600, sizeable=True, mnb=True, mxb=False)
cmds.scrollLayout('scrollLayout')
cmds.columnLayout(adj=True)
#######################################
cmds.setParent("..")
cmds.separator(h=5)
cmds.rowColumnLayout(nc=3, cal=(1, "left"), columnWidth=[(1, 100), (2, 200), (3, 80)])
cmds.text("attribut", h=20, bgc=(0.2, 0.5, 0.5))
cmds.text("key frame", h=20, bgc=(0.2, 0.5, 0.5))
cmds.text("del key frame", h=20, bgc=(0.2, 0.5, 0.5))
cmds.text("Weight:")
cmds.button("Set key", bgc=(1, 0.05, 0), c="wKet()")
cmds.button("Cl key", bgc=(0.4, 0.2, 0.3), c="ClWeinht()")
cmds.text("Length Weight:")
cmds.button("Set key", bgc=(1, 0.05, 0), c="lwKet()")
cmds.button("Cl key", bgc=(0.4, 0.2, 0.3), c="CLW()")
cmds.text("Inner Radius:")
cmds.button("Set key", bgc=(1, 0.05, 0), c="inr()")
cmds.button("Cl key", bgc=(0.4, 0.2, 0.3), c="INNER()")
cmds.text("OuterRadius:")
cmds.button("Set key", bgc=(1, 0.05, 0), c="our()")
cmds.button("Cl key", bgc=(0.4, 0.2, 0.3), c="OUR()")
cmds.text("Density:")
cmds.button("Set key", bgc=(1, 0.05, 0), c="den()")
cmds.button("Cl key", bgc=(0.4, 0.2, 0.3), c="DES()")
cmds.text("RandomAttraction:")
cmds.button("Set key", bgc=(1, 0.05, 0), c="rat()")
cmds.button("Cl key", bgc=(0.4, 0.2, 0.3), c="RANA()")
cmds.text("Twist:")
cmds.button("Set key",bgc=(1, 0.05, 0), c="twt()")
cmds.button("Cl key",bgc=(0.4, 0.2, 0.3), c="TWS()")
cmds.text("RandomTwist:")
cmds.button("Set key",bgc=(1, 0.05, 0), c="rdtw()")
cmds.button("Cl key", bgc=(0.4, 0.2, 0.3), c="RANT()")
cmds.setParent("..")
cmds.separator(h=5)
cmds.rowColumnLayout(nc=8, w=460, columnWidth=[(1, 80)])
cmds.text("User Float:", w=80)
cmds.floatField("userFloat", w=55)
cmds.text("User Vector:", w=80)
cmds.floatField("x", w=55)
cmds.floatField("y", w=55)
cmds.floatField("z", w=55)
cmds.button(" confirm ", w=80,bgc=(0.1, 1, 0.1), c="userF()")
cmds.separator(h=10)
cmds.rowColumnLayout(w=460, h=400)
cmds.rowColumnLayout(nc=12, cal=(1, "left"), columnWidth=[(1, 20),
(2, 50),(3, 50), (4, 30), (5, 50), (6, 50), (7, 5), (8, 50),
(9, 50), (10, 5), (11, 50), (12, 50)])
cmds.text(" " )
cmds.button("Set key", bgc=(1, 0.05, 0), c="usf()")
cmds.button("Cl key", bgc=(0.4, 0.2, 0.3), c="USEF()")
cmds.text(" " )
cmds.button("Set key", bgc=(1, 0.05, 0), c="userVectorX()")
cmds.button("Cl key", bgc=(0.4, 0.2, 0.3), c="USVX()")
cmds.text(" " )
cmds.button("Set key", bgc=(1, 0.05, 0), c="userVectorY()")
cmds.button("Cl key", bgc=(0.4, 0.2, 0.3), c="USVY()")
cmds.text(" " )
cmds.button("Set key", bgc=(1, 0.05, 0), c="userVectorZ()")
cmds.button("Cl key", bgc=(0.4, 0.2, 0.3), c="USVZ()")
cmds.setParent('..')
cmds.button("Reset", w=230, h=30, c='reset()')
cmds.showWindow("YetiTool")