2014-07-07 96 views
2

腳本運行後,是否可以自動運行一小段代碼?可能運行延遲的代碼執行嗎?

我這樣問是因爲某些原因,如果我將這組代碼添加到主腳本中,雖然它可以工作,但它會顯示一個標籤錯誤列表(它已經存在,但它表明它無法找到它有點)。

我意識到,在運行我的腳本之後,Maya似乎'加載'自己的刷新設置以及我公司完成的一些插件。因此,如果我在執行主腳本和Maya /插件的「刷新」之後運行一小段代碼,它可以毫無問題地工作。我希望儘可能使過程儘可能自動化,如果可能的話,所有這些都在腳本中...

因此有可能這樣做嗎?像一種延遲的編碼方法?僅供參考,主腳本執行時間取決於場景中元素的數量。越多,這將需要更長的時間...

+0

您可以創建刷新腳本的子進程並忙 - 等待它完成嗎? –

+3

將兩個腳本包含在批處理或shell中? –

+0

只需編寫一個Maya插件,在刷新後啓動代碼? – Dschoni

回答

2

瑪雅有一個命令Maya.cmds.evalDeferred是專爲此目的。它將等待,直到沒有更多的Maya處理正在等待,然後進行自我評估。

您也可以使用Maya.cmds.scriptJob來達到同樣的目的。

注意:儘管eval在瑪雅語中被認爲是危險和不安全的,但它確實很正常。主要是因爲Maya中的所有東西本質上都是不安全的,因爲幾乎所有的GUI項目都是用戶可能修改的eval命令。所以第二個讓任何人使用你的Maya shell你的安全性被破壞。

+1

感謝您對問題的深入瞭解,我確實同意我一直在問一些相當荒謬的問題(某些不可能的問題)一段時間,部分原因是有些情況下,如你所說,瑪雅反對我而不是相反。誠實地說,直到目前爲止,我還很缺乏如何正確編寫腳本,這同樣適用於di Maya安裝了不同類型的模塊/插件。 – dissidia

+0

沒有什麼是不可能的。 IT對我來說聽起來像是你的搭售東西,maya GUI採用單層方法,而maya希望你使用2層方法。 YOu應該有一個獨立的計算層,然後讓GUI獨立於這個工作。這就是所有瑪雅人試圖以不同方式工作的原因,因爲瑪雅人可能沒有GUI而活下去。無論如何,你應該問一個關於你的設計的問題,而不是每一步。到現在爲止,您要挖掘自己的每一步,需要進一步形成一個真正有效的解決方案。 – joojaa

+0

另請注意,聽起來我的所有工作都可以用getAttr – joojaa