暂停maya python执行,然后继续

暂停maya python执行,然后继续,python,maya,Python,Maya,我有一个wierd的东西,当我试图更改属性的值时,Maya说属性不存在。 原因是Maya刚刚在脚本中创建了该属性,尚未更新属性“列表”/“界面”。 有没有办法让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 dis

我有一个wierd的东西,当我试图更改属性的值时,Maya说属性不存在。 原因是Maya刚刚在脚本中创建了该属性,尚未更新属性“列表”/“界面”。 有没有办法让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 # 
Error:RuntimeError:file行22:setAttr:没有与名称匹配的对象:vrayDisplacement.vrayDisplacementKeepContinuity#

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

如果是这样,为什么要运行第一个
setAttr
?毕竟,它正在修改“vrayDisplacement”的属性。您是否尝试过对cmds.setAttr('vrayDisplacement.vrayDisplacementKeepContinuity',1)进行注释并查看结果?也许它不完全是这样拼写的。当然只是一个建议。我还没来得及玩vray…你试过在属性编辑器关闭的情况下运行它吗?overrideGlobalDisplacement工作的唯一原因是因为它不是在脚本执行期间添加的属性。但其他人则是。我尝试关闭属性编辑器并注释掉vrayDisplacementKeepContinuity,但maya抱怨下一个选项filtertex。我需要让python停止,然后在maya有时间更新后重新开始。我猜最后的办法是让用户运行脚本两次,但我希望能够避免这种情况。这个线程似乎证明了这一点:然而,设置添加属性需要7秒延迟才能完成,这是一种糟糕的做法。