1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

MayaAdvent Calendar 2021

Day 9

ネームスペース取得する方法色々

Last updated at Posted at 2021-12-08

アセットをリファレンスして作業する前提でサポート用のツールを作る際、
ネームスペースを取得して色々行ったのだけども、そのときの紆余曲折をまとめ

namespaceInfoで問い合わせ

allNameSpace = []
ignorList = ['UI', 'shared']
allNameSpace = cmds.namespaceInfo(listOnlyNamespaces = True)
allNameSpace = list(set(allNameSpace) - set(ignorList))

シーン内のネームスペースを全部取得してくれる。

全部返してくれるので ['UI', 'shared'] といったデフォルトのネームスペースも含まれる。
unload状態のリファレンスで使用しているネームスペースも返してくれる。
そのネームスペースがリファレンスで使用しているのか否かが判らない。

referenceQuery で問い合わせ

allNameSpace = []
refNodes = cmds.ls(type = "reference")
for refNode in refNodes:
     if refNode == "sharedReferenceNode":
         continue

     allNameSpace.append(cmds.referenceQuery(refNode, namespace=True,,shortName  =True))

別のノードを渡しても取れるが、リファレンスで使用しているネームスペースを取得したいと考えるとreferenceノードのほうが都合が良かった。
リファレンスされていないノードを渡すとエラーになる。

fileで問い合わせ

allNameSpace = []
allRefFiles = cmds.file(q =True ,reference =True)

for refFile in allRefFiles:
    allNameSpace.append(cmds.file(refFile,q =True ,namespace = True))

シーン内でリファレンスで使用しているネームスペースを取得できる

リファレンスノードにロード状態を問い合わせる

cmds.referenceQuery(refNode,isLoaded=True)

これらを組み合わせてフィルタリングしてみる

ロードされているリファレンスのネームスペースを取得する

allNameSpace = []
allRefFiles = cmds.file(q =True ,reference =True)

for refFile in allRefFiles:
    refnode = cmds.file(refFile,q =True ,referenceNode = True)

    if cmds.referenceQuery(refNode,isLoaded=True):
        allNameSpace.append(cmds.file(refFile,q =True ,namespace = True))

リファレンスに使用されていないネームスペースを取得する

allNameSpace = []
ignorList = ['UI', 'shared']
allNameSpace = cmds.namespaceInfo(listOnlyNamespaces = True)
allNameSpace = list(set(allNameSpace) - set(ignorList))

allRefFiles = cmds.file(q =True ,reference =True)

referenceNameSpace = []

for refFile in allRefFiles:
    referenceNameSpace.append(cmds.file(refFile,q =True ,namespace = True))

allNameSpace = list(set(allNameSpace) - set(referenceNameSpace ))
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?