ジャンプ先: 概要. 戻り値.
関連項目. フラグ. Python 例.
namespace( [string] , [absoluteName=boolean], [addNamespace=string], [collapseAncestors=string],
[exists=string], [force=boolean], [isRootNamespace=string],
[moveNamespace=[string,
string]], [parent=string],
[recurse=boolean], [relativeNames=boolean], [removeNamespace=string],
[rename=[string, string]],
[setNamespace=string])
注意:
オブジェクト名や引数を表す文字列はカンマで区切ります。これは概要には示されていません。
namespace は 「元に戻す」が可能、「照会」が可能、「編集」が不可能 です。
このコマンドを使用して、ネームスペースの作成、設定、または削除が可能です。ネームスペースとは、特定の名前で複数のオブジェクトを単にグループ化したものです。
ネームスペースは、主に Maya
での名前の衝突を回避するために使用されます。名前の衝突とは、ファイルをインポートした場合などに、新規のオブジェクトが既存のオブジェクトと同じ名前を持つことを指します。
ネームスペースを使用すると、2 つのオブジェクトが別のネームスペースにあれば、同じ名前を付けることができます。
ネームスペースは、ファイル
システムのような階層状の構造になっていると考えてください。ネームスペースはディレクトリにあたり、オブジェクトはファイルにあたります。ネームスペース名を区切るには、コロン(':')記号を使用します。スラッシュ('/')や円記号('\')は使用しません。
ネームスペースは、オブジェクトだけでなく、他のネームスペースを含むことができます。
オブジェクト同様、1つのネームスペース内い含めるネームスペース名はそれぞれ固有でなければなりません。オブジェクトおよびネームスペースは、1つのネームスペースにしか存在できません。ネームスペース名とオブジェクト名は衝突しないため、1つのネームスペース内であっても、ネームスペースとオブジェクトは同じ名前にすることができます。
コロン(':')に続けて、名称が未設定のルート ネームスペースが指定されています。
名前のついたネームスペースにない他のすべてのオブジェクトは、ルート ネームスペースにあります。
オブジェクト名の前のコロンはなくてもわかるため、通常は省略されています。
最初のコロンが重要になるのは、「rename」コマンドを使用して、ネームスペース間でオブジェクトを移動する場合です。「rename」コマンドでは、新規の名前はカレント
ネームスペースに関連します。ただし、最初のコロンを使用した完全な名前の場合にはこの限りではありません。 ネームスペースの作成には
add/addNamespace フラグが使用されます。カレント ネームスペースに作成されます。カレント
ネームスペースの変更は、-set/setNamespace フラグで行います。カレント ネームスペースをルート
ネームスペースにリセットするには、「namespace -set ":";」を使用します。オブジェクトが作成されると、必ずカレント
ネームスペースに追加されます。 relativeNamespace フラグを使用して、ノード名の UI
上での表示方法や「ls」コマンドによって返される方法を変更することができます。「ls」コマンドの戻り値の、relativeNamespace
モードでの動作に関する詳細を以下に記します。
シーンにあるすべてのメッシュ オブジェクトをリスト表示する:
ls -type "mesh";
このコマンドは、ルートや子ネームスペースにあるすべてのメッシュ オブジェクトをリスト表示します。相対名のルックアップ
モードでは、すべての名前がカレントのネームスペースに相対して表示されます。相対名のルックアップ モードではない場合(Maya
のデフォルト動作)、結果はルート ネームスペースに相対して出力されます。
ワイルドカード "*" を使用する:
namespace -set myNS;
ls -type "mesh "*";
相対名のルックアップ モードでは、"*" はカレントのネームスペースにマッチするので、ls コマンドはカレントのネームスペース(つまり
myNs)に定義されるメッシュのみをリスト表示します。相対名のルックアップ モードではない場合(Maya
のデフォルト動作)、名前はルートに相対して "*" はルート ネームスペースにマッチするので、最終的にはルート
ネームスペースに定義されるメッシュのみをリスト表示します。
相対名のルックアップ モードの場合は、ルート ネームスペースに定義されるメッシュのみをリスト表示する ls -type mesh
":*" を検索パターンに指定することで、ルート ネームのリスト表示を強制できます。相対名のルックアップ モードではない場合も
":*" を使用することができるので、ルートのリスト表示方法の表記を統一させることもできます。
子ネームスペースの内容をリスト表示する:
ls -type mesh "*:*";
直接の子ネームスペースにあるすべてのメッシュをリスト表示する場合は "*:*" を使用します。相対名のルックアップ
モードの場合、"*:*" はカレント ネームスペースの直接の子ネームスペースにあるメッシュをリスト表示します。相対名のルックアップ
モードではない場合、"*:*" はルート直下のレベルのネームスペースにあるメッシュをリスト表示します。
ネームスペースの内容のリストを再帰的に表示する:
例: ls -type mesh -recurse on "*"
「ls」コマンドの -recurse フラグを使用して、任意の子ネームスペースを再帰的に走査します。相対名のルックアップ
モードの場合、このコマンドはカレントと、カレントの任意の子ネームスペースにあるすべてのメッシュをリスト表示します。相対名のルックアップ
モードではない場合、このコマンドはルートから下へと検索するので、「ls -type mesh」と同等です。
戻り値の型は照会モードでは照会フラグが基になります。
namespaceInfo
absoluteName, addNamespace, collapseAncestors, exists, force, isRootNamespace, moveNamespace, parent, recurse,
relativeNames, removeNamespace, rename, setNamespace
ロング ネーム(ショート ネーム) |
引数型 |
プロパティ |
addNamespace(add) |
string |
|
|
exists(ex) |
string |
|
|
指定したネームスペースがある場合は true、ない場合は false を返します。 |
|
isRootNamespace(ir) |
string |
|
|
指定したネームスペースがルートの場合は true、ルートでない場合は false を返します。 |
|
force(f) |
boolean |
|
|
名前の衝突を無視する移動操作を強制的に実行するために -mv/-moveNamespace と一緒に使用します。 |
|
moveNamespace(mv) |
[string, string] |
|
|
1 番目のネームスペースの内容を 2 番目のネームスペースに移動します。 子ネームスペースも移動されます。
参照されたノードノードを含むネームスペースを移動しようとすると、エラーが発生します。「file -e
-namespace」コマンドを使用して、リファレンス ネームスペースを変更してください。
移動元のネームスペースに移動先のネームスペース内のオブジェクトと同じ名前のオブジェクトが含まれる場合、エラーが発生します。「-force」フラグを使用してこのエラーを無効にしてください。オブジェクトの名前を変更して固有な名前にすると、名前の衝突を解決できます。 |
|
parent(p) |
string |
|
|
-add/-addNamespace と一緒に使用して、新規のネームスペースの親を指定します。 |
|
relativeNames(rel) |
boolean |
|
|
名前をカレントのネームスペースに相対してルックアップする、相対名のルックアップ
モードをオンにします。デフォルトではオフのため、名前のルックアップは常にルート ネームスペース相対になります。setAttr
などのコマンドの動作が変わるため、この機能をオンにする場合はご注意ください。ネームスペース非依存のカスタム プロシージャを実行する際に
relativeNames をオンにし、カスタム プロシージャから制御を戻す際にこの機能をオフにすることをお勧めします。
なお、相対命名はファイル I/O 時にオンになります。relativeNames をオンのままにしておくことは推奨しませんが、ファイル
I/O 時に値を切り替えようとすると、Maya 内部で一時的に有効にされているために「オン」のままになります。
relativeNames
を有効にすると、「ls」コマンドの戻り値はカレントのネームスペース相対になります。詳細については、このコマンドの説明を参照してください。 |
|
removeNamespace(rm) |
string |
|
|
指定したネームスペースを削除します。削除するためには、そのネームスペースは空でなければなりません。 |
|
rename(ren) |
[string, string] |
|
|
1 番目のネームスペースの名前を 2
番目のネームスペースの名前に変更します。子ネームスペースの名前も変更されます。どちらの名前もカレントのネームスペースに相対します。-parent
フラグを使用して、名前を変更したネームスペースの親ネームスペースを指定します。 2
番目のネームスペース名がすでに存在する場合はエラーになります。 |
|
setNamespace(set) |
string |
|
|
recurse(r) |
boolean |
|
|
-exists フラグと一緒に使用して、指定したネームスペースを再帰的に探します |
|
absoluteName(an) |
boolean |
|
|
戻り値がネームスペースの場合に、ネームスペースの値を 絶対形式で返します。ネームスペースの絶対名とは、
ルートのネームスペース名と「:」が付いたプリフィックスで 始まる名前です。 |
|
collapseAncestors(ch) |
string |
|
|
指定されたネームスペースのすべての空の先祖を削除します。 空のネームスペースとは、DAG
オブジェクトまたはネストされたネームスペースを まったく含まないネームスペースです。 |
|
: コマンドの作成モードで使用可能なフラグ |
: コマンドの編集モードで使用可能なフラグ |
: コマンドの照会モードで使用可能なフラグ |
: タプルまたはリストとして渡された複数の引数を持てるフラグ |
import maya.cmds as cmds
# Create three namespaces
cmds.namespace( add='FOO' )
cmds.namespace( add='BAR' )
cmds.namespace( add='FRED' )
# Set the current namespace to FOO
cmds.namespace( set='FOO' )
# Create the namespace BAR Under FOO. Note there are
# two "BAR" namespaces, :BAR and :FOO:BAR.
cmds.namespace( add='BAR' )
# Check to see that the BAR namespace exists within the current
# namespace (FOO)
cmds.namespace( exists='BAR' )
# Result: 1 #
# Check to see that the FRED namespace exists under the root namespace
cmds.namespace( exists=':FRED' )
# Result: 1 #
# Create two objects. It gets added to the current namespace FOO;
cmds.sphere( n='sphere1' )
cmds.sphere( n='sphere2' )
# Result: FOO:sphere2 #
# Move sphere1 from namespace FOO to FOO:BAR. Note that we
# need to qualify sphere1 with the namespace FOO because
# "sphere1" identifies a non-existent object in the root namespace.
cmds.rename( 'FOO:sphere1', 'BAR:sphere1' )
# Result: FOO:BAR:sphere1 #
# Move sphere2 from namespace FOO to BAR. Note the leading
# colon on the new name.
cmds.rename( 'FOO:sphere2', ':BAR:sphere2' )
# Result: BAR:sphere2 #
# query the current namespace (using the namespaceInfo command)
cmds.namespaceInfo( currentNamespace=True )
# Result: FOO #
# remove the namespace FRED (it must be empty)
cmds.namespace( set=':' )
cmds.namespace( rm='FRED' )
# Check to see that the FRED namespace has been removed
cmds.namespace( query=True, exists=':FRED' )
# Result: 0 #
# Rename namespace BAR to JOE
# Note: this is done by creating JOE, moving the contents of
# BAR into JOE, and then removing the (now empty) BAR.
cmds.namespace( set=':' )
cmds.namespace( add='JOE' )
cmds.namespace( mv=('BAR', 'JOE') )
cmds.namespace( rm='BAR' )
# JOE should now contain a single node: 'sphere2'.
# Move the contents of JOE into FRANK, when FRANK already
# has a 'sphere2' node. The '-force'
# flag is needed.
cmds.namespace( set=':' )
cmds.namespace( add='FRANK' )
cmds.namespace( set='FRANK' )
cmds.sphere( n='sphere2' )
cmds.namespace( force=True, mv=(':JOE', ':FRANK') )
# In moving 'sphere2' from JOE to FRANK it will be renamed to
# 'sphere3' to ensure uniqueness.
# The namespace FRANK should now contain 'sphere2', 'sphere2Shape',
# and 'sphere3'.
# Determine whether the given namespace is root
#
cmds.namespace( query=True, isRootNamespace="FOO" )
#Set return value to be absolute namespace name
#
print(cmds.namespace(add = "testAbsoluteName", absoluteName = true))
#Create a sample hierachy that contains only empty namespaces, then collapse it
#
cmds.namespace( set = ":");
cmds.namespace( add = "emptyLevel1");
cmds.namespace( add = "emptyLevel2", parent = "emptyLevel1");
cmds.namespace( add = "leaf", parent = "emptyLevel1:emptyLevel2");
cmds.namespace( collapseAncestors = "emptyLevel1:emptyLevel2:leaf");