Maya Python / Mel:检索删除的最后一个对象的名称

时间:2014-02-14 14:58:06

标签: python scripting maya mel

想知道是否可以检索最后删除的对象的名称。

我查看了listHistory,但这似乎列出了所选或命名对象的历史记录。我还查看了undoHistory printqueue,它将撤消历史记录打印到脚本编辑器中,但我无法从控制台中检索该信息。

有什么想法吗?我环顾四周,找不到任何关于此的信息。提前谢谢。

2 个答案:

答案 0 :(得分:2)

您可以通过以下方式获取列表:

undoInfo -q -pq;

有一些非常好的用例可以用来剥离Maya撤消。如确定事后的选择顺序。在任何情况下,可能很难知道它实际上是什么形成队列,因此您可能需要撤消并重做以获取已删除对象的内容。

所以这可能会或可能不会起作用,里程可能会有所不同。

作为备注,因为您还原的东西为什么不在保存时保存对象列表。顺序将是相同的(确保),因此您可以将结束时的更改和删除视为缺少的对象。查看简单ls中的对象是否处于创建顺序。例如,您可以将此用于从导入到导入的基本差异。同样适用于删除。

答案 1 :(得分:0)

无法在事后删除任何个人删除。但是,您可以将attributeDeleted scriptJob粘贴到要监视的对象上 - 它们将在删除时触发。如果你真的想要捕获每个对象,那么监听事件DagObjectCreated的scriptJob将允许你将其他scriptJob挂钩到每个新对象 - 但是大多数时候这不是一个好主意,因为它会创建一个你场景中的scriptJobs(加上你必须在加载时循环遍历场景并将相同的删除回调附加到现有对象......)

import maya.cmds as cmds
from functools import partial

def objectDeleted(obj):
    print "%s was deleted" % obj

def catch_deletion(obj):
   cmds.scriptJob ( attributeDeleted = ( (obj + ".tx"), partial(objectDeleted, obj) ) )

catch_deletion('pCube1')