2013-12-08 59 views
1

我已經使用名稱空間「hello」導入了一個文件「test_v001.mb」。有沒有一種方法可以在大綱中刪除冒號並將其替換爲下劃線?將名稱空間分隔符從冒號(:)更改爲Maya中的下劃線(_)

import maya.cmds as cmds 

test_file = "D:/test/test_v001.mb" 

cmds.file(test_file, i=True, typ='mayaBinary', ra=True, mnc=False, op="v=0;", ns="hello", pr=True, lrd="all") 

在下面的截圖中,我爲第三個手動完成了手動。我必須這樣做一個大文件,所以試圖自動化它。 Screenshot

當我在文件命令中沒有給出任何命名空間時,那麼這個列在下面的outliner中就被下劃線替換了,這正是我下面需要的。但是,我想在大綱中使用「hello」而不是文件名作爲默認前綴。這容易實現嗎?

enter image description here

另外,如果我給命名爲「:」當時我甚至不得到任何的名稱空間和列。所以添加前綴是另一種選擇,但僅在MEl中可用。

+0

你不能改變這一點。它的目的通常是不允許使用的名字。如果這對您是個問題,請不要使用名稱空間。在這種情況下,你不會獲得隔離的好處。 – joojaa

回答

3

Maya使用:作爲命名空間,而不是seem對此很靈活。

冒號(「:」)字符是用來代替斜線(「/」)或反斜槓(「\」) 字符名稱空間和節點的名稱 分離隔板。

下面的代碼可能是與hello_更換hello:有所幫助:

import pymel.core as pc 
pc.namespace(set = ":")   # just in case if there is any preset namespace 

for obj in pc.ls(rn=False):  # Referenced objects cannot be renamed 
    if "hello:" in obj: 
     pc.rename(obj, obj.replace(":", "_")) 

命名空間肯定可以removed

可以在導入文件時使用renamingPrefix來解析帶有前綴而不是命名空間的節點。在你的情況下,可以使用cmd.file(,,rpr = "hello",,,)

+1

命名空間名稱可以使用重命名來修復,但是您可能還需要使用命名空間(rm = True)來刪除命名空間。命名空間即使在文件中是空的 - 例如,如果你有一個命名空間foo,你也不能有一個名爲'foo'的對象。 – theodox

+0

'pc.namespace(set =「:」)'是否具有相同的用途?你提到的關於命名空間的東西可能是真的,現在還不能確認,但沒有明確記錄。我發現最接近的是[*「像對象一樣,名稱空間的名稱在另一個名稱空間中必須是唯一的。」*](http://download.autodesk.com/us/maya/2010help/CommandsPython/namespace.html)。另外,目前我無法想到他們爲什麼不允許它的原因,也許是爲了避免複雜性。 –

+0

@theodox剛剛確認它,它絕對是這種情況。 –

相關問題