如何使cmd .duplicate()在maya中调用时立即执行



如何制作命令。在maya中调用时立即重复执行?而不是等待整个脚本运行,然后分批执行它。例如,对于下面这个脚本,所有的执行结果将在整个脚本执行后立即出现

import time
for i in range(1, 6):
pm.select("pSphere{}".format(i))
time.sleep(0.5)
cmds.duplicate()

我尝试使用python多线程,像这样

import threading
import time
def test():
for i in range(50):
cmds.duplicate('pSphere1')
time.sleep(0.1)
thread = threading.Thread(target=test)
thread.start()
#thread.join()
有时候它能成功,但是有时候它会崩溃。如果主线程加入,就达不到效果。当我想做大量的命令时。重复的话,会导致内存消耗非常高,而且程序运行越来越慢。此外,所有重复的结果在整个python脚本运行后一起出现,所以我怀疑当我调用cmd复制时,Maya并没有完成命令的执行和输出,而是暂时将结果放在一个容量可变的容器中。随着我调用次数的增加,容器动态扩展的过程导致程序变得越来越慢,内存消耗也急剧增加。因为我看到其他插件可以实时看到命令执行结果,所以我认为这应该是一种合适的方法,只是我还没有找到
<代码>

你的假设不正确。Maya不需要显示任何东西来完成工具。如果您想查看两者之间的结果,您可以尝试使用:

PP_4,但这不会改变一般的行为。我想你的记忆问题另有原因。您可以检查暂时关闭历史记录或撤销队列是否有帮助。

当然,enakard是正确的答案,大多数maya命令不是线程保存,除非在文档中提到。每个节点的创建和修改都必须在主线程中完成。

简单的答案是你不,maya命令一般和大多数与maya的交互不是线程安全的线程通常用于数据操作之前,它被用来在maya中操作任何东西,但一旦你开始创建节点或设置属性,或任何maya修改,没有线程。

最新更新