暂停maya python执行,然后继续

时间:2014-03-19 12:54:02

标签: python maya

我有一个奇怪的事情,Maya说当我试图改变它的值时,属性不存在。 原因是Maya刚刚在脚本中创建了该属性,并且还没有更新属性“list”/“interface”。 有没有办法让maya在继续之前暂停脚本执行几秒钟?

import maya.mel as mm
import maya.cmds as cmds
import time, os

# create something to add a node to
cmds.polySphere(sx=10, sy=15, r=20)
# add vray displacement node
mm.eval('vray objectProperties add_single VRayDisplacement;')
# add to displacement node
mm.eval('vray addAttributesFromGroup vrayDisplacement vray_subdivision 1;')
mm.eval('vray addAttributesFromGroup vrayDisplacement vray_displacement 1;')
mm.eval('vray addAttributesFromGroup vrayDisplacement vray_subquality 1;')
# connect filenode to displacement v-ray node
cmds.shadingNode('file',asTexture=1,n='displacement_file')
cmds.connectAttr('displacement_file.outColor', 'vrayDisplacement.displacement')
#cmds.pause( sec=2 )
cmds.refresh(su=1)
cmds.refreshEditorTemplates
#time.sleep(5) # have to sleep because maya needs to update the vray node with the new     attributes
# edit settings for displacement node
cmds.setAttr('vrayDisplacement.overrideGlobalDisplacement', 1)
cmds.setAttr('vrayDisplacement.vrayDisplacementKeepContinuity', 1)
cmds.setAttr('vrayDisplacement.vray2dDisplacementFilterTexture', 0)
cmds.setAttr('vrayDisplacement.vrayDisplacementAmount', 1.3)
cmds.setAttr('vrayDisplacement.vrayEdgeLength', 6)
cmds.setAttr('vrayDisplacement.vrayMaxSubdivs', 4)

我试过了:

cmds.pause( sec=2 )
cmds.refresh(su=1)
cmds.refreshEditorTemplates
time.sleep(5)

这些都没有成功。 我得到的错误是:

Error: RuntimeError: file <maya console> line 22: setAttr: No object matches name: vrayDisplacement.vrayDisplacementKeepContinuity # 

1 个答案:

答案 0 :(得分:0)

在玛雅,这是一件奇怪的事情。您必须使用cmds.evalDeffered()来包装cmds.setAttr以延迟它。