2011-02-03 18 views
0

目前我的客戶端需要的參考文件路徑爲 的項目仍保留爲linux格式。例如轉換/映射linux引用路徑而不更改文件?

A.ma , referencing objects from --> //linux/project/scene/B.ma 
B.ma , referencing objects from --> //linux/project/scene/C.ma 

但是,我們大多數的Maya許可證都在Windows上。我可以運行一個 Python腳本來轉換所有路徑的窗口路徑並保存 文件。例如

Z:\project\scene\B.ma 

但是我試圖想出一個辦法做到這一點沒有轉換 或者改變原來的文件....我會盡力解釋什麼,我想做。

  • 運行腳本來打開文件。
  • 該腳本檢查linux格式化的參考路徑,以及所有子級路徑下的子路徑。
  • 將所有路徑映射到其適當的窗口格式化路徑。
  • 賦予動畫師正常「保存」文件的能力,無需運行單獨的保存腳本。

這是可以通過Python腳本實現嗎?或者我需要一個完全編譯的插件來實現這個功能嗎?

任何建議,非常感謝。


編輯:謝謝您的參與。

稍微澄清一點。這些項目是由一家遠程公司爲我們設立的,部分要求是我們必須保持現狀。它們是絕對的道路,我們在這個問題上沒有選擇。

我們在我們的Fedora工作站上匹配安裝//linux/。在我們的Windows工作站上,該驅動器映射到Z:\。我們只有2個Maya Linux tho許可證,這就是爲什麼我要這樣做。

+1

你不能使用相對路徑,而不是絕對路徑? – 2011-02-03 09:36:39

+0

在Windows機器上遠程掛載Linux文件系統有什麼問題? – 2011-02-03 10:59:31

回答

1

這是一個解決方案。第一步是創建一個dict保持跟蹤的Linux/Windows的引用(不要忘記導入re模塊正則表達式):

>>> def windows_path(path): 
    return path.replace('//linux', 'Z:').replace('/', '\\') 

>>> reg = re.compile('(\w+\.ma) , referencing objects from --> (.*)') 
>>> d = {} 
>>> for line in open('D:\\temp\\Toto.txt'): 
    match = reg.match(line) 
    if match: 
     file_name = match.groups()[0] 
     linux_path = match.groups()[1] 
     d[file_name] = (linux_path, windows_path(linux_path)) 


>>> d 
{'B.ma': ('//linux/project/scene/C.ma', 'Z:\\project\\scene\\C.ma'), 
'A.ma': ('//linux/project/scene/B.ma', 'Z:\\project\\scene\\B.ma')} 

然後你只需要循環這一dict索要文件的保存:

>>> for file_name in d.keys(): 
    s = raw_input('do you want to save file %s ? ' % file_name) 
    if s.lower() in ('y', 'yes'): 
     # TODO: save your file thanks to d[file][0] for linux path, 
     # d[file][1] for windows path 
     print '-> file %s was saved' % file_name 
    else: 
     print '-> file %s was not saved' % file_name 


do you want to save file B.ma ? n 
-> file B.ma was not saved 
do you want to save file A.ma ? yes 
-> file A.ma was saved 
0

許多Windows應用程序將解釋帶有兩個前導「/」作爲UNC路徑的路徑。我不知道瑪雅是否是其中之一,但試用一下。如果Maya可以理解像「// servername/share/foo」這樣的路徑,那麼您所需要做的就是建立一個名爲「linux」的SMB服務器,路徑將按原樣運行。我猜想這實際上就是你的客戶端所做的,因爲「Linux」路徑在僅限Linux的環境中沒有意義。

0

您可以使用環境變量來執行此操作。 Maya將擴展文件路徑中存在的環境變量,您可以使用Maya.env爲每個平臺正確設置它們。

0

你在尋找的是dirmapmel命令。這對你的文件是完全非侵入性的,因爲你只需定義從你的linux路徑到windows和/或反之亦然的映射。 Maya將在內部應用映射來解析路徑,而不會在保存文件時進行更改。

要設置dirmap,您需要運行一個MEL腳本,它在maya啓動時發出相應的命令。 UserSetup.mel可以放在一個地方。

有關詳細信息,請參閱官方文檔 - 這個特殊的鏈接指向瑪雅2012年,命令在Maya 7.0及更早以及雖: http://download.autodesk.com/global/docs/maya2012/en_us/Commands/dirmap.html