ジャンプ先: 概要. 戻り値. 関連. フラグ. Python 例.
namespace(
[string]
, [absoluteName=boolean], [addNamespace=string], [collapseAncestors=string], [deleteNamespaceContent=boolean], [exists=string], [force=boolean], [isRootNamespace=string], [mergeNamespaceWithParent=boolean], [mergeNamespaceWithRoot=boolean], [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 ":";」を使用します。オブジェクトが作成されると、既定で現在のネームスペースに追加されます。
修飾された名前を使用して新しいネームスペースを作成すると、まだ存在していない中間ネームスペースが自動的に作成されます。たとえば、新しいネームスペースの名前を「A:B」と指定し、現在のネームスペースに「A」という子ネームスペースがすでに含まれている場合は、「B」という新しい子ネームスペースが「A」の下に作成されます。ただし、現在のネームスペースに「A」という子がまだ含まれていない場合は、「A」が自動的に作成されます。これは指定した名前(「A:B:C:D」など)に含まれているレベルの数に関係なく適用されます。
「p/-parent」フラグを使用すると、単に現在のネームスペースを既定にする代わりに、新しいネームスペースの作成先の親ネームスペースを明示的に指定できます。
新しいネームスペースに対して指定した名前が絶対名(「:A:B」のようにコロンで始まる名前)である場合は、現在のネームスペースと「parent」フラグの両方が無視され、ルート ネームスペースに新しいネームスペースが作成されます。
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, deleteNamespaceContent, exists, force, isRootNamespace, mergeNamespaceWithParent, mergeNamespaceWithRoot, moveNamespace, parent, recurse, relativeNames, removeNamespace, rename, setNamespace
ロング ネーム(ショート ネーム) |
引数タイプ |
プロパティ |
addNamespace(add)
|
string
|
|
|
指定した名前のネームスペースを作成します。修飾された名前(「A:B」)と修飾されていない名前(「A」)の両方を使用できます。修飾された名前に含まれている高レベルのネームスペースの中にまだ存在しないものがある場合は、それらのネームスペースが作成されます。
|
|
deleteNamespaceContent(dnc)
|
boolean
|
|
|
ネームスペースの除去時に、ネームスペースの内容も除去されることを示すために、「rm/removeNamespace」フラグと一緒に使用します。
|
|
exists(ex)
|
string
|
|
|
指定したネームスペースがある場合は true、ない場合は false を返します。
|
|
isRootNamespace(ir)
|
string
|
|
|
指定したネームスペースがルートの場合は true、ルートでない場合は false を返します。
|
|
force(f)
|
boolean
|
|
|
名前の衝突を無視する移動操作を強制的に実行するために、「mv/-moveNamespace」と一緒に使用します。
|
|
mergeNamespaceWithRoot(mnr)
|
boolean
|
|
|
「rm/-removeNamespace」フラグと一緒に使用します。ネームスペースを除去する場合、残りのネームスペースの内容をルート ネームスペースに移動します。
|
|
mergeNamespaceWithParent(mnp)
|
boolean
|
|
|
「rm/-removeNamespace」フラグと一緒に使用します。ネームスペースを除去する場合、残りのネームスペースの内容を親ネームスペースに移動します。
|
|
moveNamespace(mv)
|
[string, string]
|
|
|
1 番目のネームスペースの内容を 2 番目のネームスペースに移動します。子ネームスペースも移動されます。
参照されたノードを含むネームスペースを移動しようとすると、エラーが発生します。「file」コマンド(「file -edit -namespace」)を使用して、リファレンス ネームスペースを変更してください。
移動元のネームスペースに移動先のネームスペース内のオブジェクトと同じ名前のオブジェクトが含まれる場合、エラーが発生します。「force」フラグを使用してこのエラーを無効にしてください。オブジェクトの名前を変更して固有な名前にすると、名前の衝突を解決できます。
|
|
parent(p)
|
string
|
|
|
「addNamespace」または「rename」フラグと一緒に使用して、新しいネームスペースの親を指定します。ネームスペースの親のフル パスが必要です。「addNamespace」を絶対名を一緒に使用すると「parent」が無視され、警告が表示されます。
|
|
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
|
|
|
コマンドによって返されるネームスペースの目的のフォーマットを指定するために使用できる汎用フラグです。ネームスペースの絶対名は、ルート ネームスペース「:」で始まり、すべての親ネームスペースを含むフル ネームスペース パスです。たとえば、「:ns:ball」は絶対ネームスペース名ですが、「ns:ball」は絶対ネームスペース名ではありません。
|
|
collapseAncestors(ch)
|
string
|
|
|
指定されたネームスペースのすべての空の先祖を削除します。空のネームスペースとは、オブジェクトまたはその他のネストされたネームスペースをまったく含まないネームスペースです。
|
|
フラグはコマンドの作成モードで表示できます
|
フラグはコマンドの編集モードで表示できます
|
フラグはコマンドの照会モードで表示できます
|
フラグに複数の引数を指定し、タプルまたはリストとして渡すことができます。
|
import maya.cmds as cmds
# Create three namespaces
cmds.namespace( add='FOO' )
cmds.namespace( add='BAR' )
cmds.namespace( add='FRED' )
# Create namespace with qualified name
cmds.namespace( add="A:B" )
# Create namespace with qualified name
cmds.namespace( add="C:D", parent="A:B" )
# Create namespace with qualified name
cmds.namespace( add=":A:B:C:D:E" )
# 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( 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")
# Create a sample for removing an existed namespace.
# This command can also be used together with three option parameters named
# deleteNamespaceContent/mergeNamespaceWithParent/mergeNamespaceWithRoot.
# The functionality of the three option parameters will also be displayed in the
# following sample.
# Note: The three option parameters are mutually exclusive.
# Without any option parameters specified, the default way it performances that
# it can only remove a namespace that is empty. If you want to remove any namespace
# with contents, please add option parameter deleteNamespaceContent.
#
cmds.namespace( set = ":")
cmds.namespace( add = ":RM_TEST_ROOT:FOO:BAR:JOE")
cmds.sphere( name = ":RM_TEST_ROOT:FOO:obj1")
cmds.sphere( name = ":RM_TEST_ROOT:FOO:BAR:obj2")
# Trying to remove a namespace that is not empty without option parameter,
# user will get an error message show that maya cannot remove a namespace that
# is not empty.
#
#cmds.namespace( removeNamespace = ":RM_TEST_ROOT:FOO") # Run this command you'll get an error.
# Trying to remove an empty namespace.
# Namespace :RM_TEST_ROOT:FOO:BAR:JOE has been removed successfully by the command.
#
cmds.namespace( removeNamespace = ":RM_TEST_ROOT:FOO:BAR:JOE")
cmds.undo()
# Usage of deleteNamespaceContent option parameter:
# Remove all the contents in the target namespace specified in the command and
# remove the namespace
#
cmds.namespace( removeNamespace = ":RM_TEST_ROOT:FOO:BAR", deleteNamespaceContent = True)
cmds.undo()
# Usage of mergeNamespaceWithParent parameter:
# Move the content of the target namespace specified in the command to its parent
# namespace and remove the namespace.
#
cmds.namespace( removeNamespace = ":RM_TEST_ROOT:FOO:BAR", mergeNamespaceWithParent = True)
cmds.undo()
# Usage of mergeNamespaceWithRoot parameter:
# Move the content of the target namespace specified in the command to the root
# namespace and remove the namespace.
#
cmds.namespace( removeNamespace = ":RM_TEST_ROOT:FOO:BAR", mergeNamespaceWithRoot = True)