2014-02-14 48 views
1

想知道是否可以檢索最後一個刪除的對象的名稱。Maya Python/Mel:檢索刪除的最後一個對象的名稱

我查看了listHistory,但似乎列出了選定或命名對象的歷史。我還查看了撤消歷史打印隊列,它將撤消歷史記錄打印到腳本編輯器中,但我無法從控制檯檢索該信息。

任何想法?我環顧四周,無法找到任何信息。提前致謝。

+0

我不相信事後可能。你看過一個'scriptJob'來觀察刪除嗎? – mhlester

+0

作爲一種解決方法,我使用scriptJob來存儲正在工作的最後選擇 - 感覺應該有一種檢索此信息的方式。 – ABCheshire

回答

0

在事實發生後捕獲任何單個刪除是不可能的。但是,您可以將attributeDeleted腳本作業粘貼在要監視的對象上 - 當它們被刪除時它會觸發。如果你真的想捕捉每一個對象,一個監聽事件DagObjectCreated的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') 
+0

不要這麼嚴格,使用undoInfo可能會在事實之後捕獲刪除。 – joojaa

+0

我真的不認爲這是可能的一般情況下,撤銷隊列存儲僅暴露doIt()和undoIt()的MPxCommands,而不管他們爲保持事物是否可撤銷或重做而做的內部安排。 OP將負責審覈場景,無論如何。 – theodox

+0

不,但你得到一個提示,可以展開撤消隊列進一步調查。但看到這是你所問的。無論如何,我確實使用May來表明它不一定是可能的。 – joojaa

2

您可以獲取列表:

undoInfo -q -pq; 

有一些非常好的Maya撤銷用例。如事後確定選擇順序。在任何情況下,可能很難知道它實際上是從隊列中形成的,因此您可能需要撤消並重做以獲取被刪除的對象。

所以這可能會或可能不會工作,里程可能會有所不同。

作爲備註,因爲您恢復的東西爲什麼不保存保存時的對象列表。訂單將保持相同(確保),因此您可以將結尾和刪除中的更改視爲缺少的對象。看到一個普通的對象在創建順序。例如,您可以將此用於導入導入的基本差異。同樣適用於刪除。