Back to Overview

cmd Wrapper

Tools & Techart Topics

まず最初にレポはここにあります。

Trevor van Hoofと一緒に作成された Maya cmds モジュールのシンプルなラッパーです。

このモジュールは侵略的ではなく、masa.cmdsを完全に置き換えることができ、ロードされていればその利点を使うことができ、利点が使われていなければオーバーヘッドなしで簡単にオリジナルのものに置き換えることができるという考えです。 このモジュールは文字列の代わりにスマートオブジェクトを返すという考えです。

もともとcmdsを使ってオブジェクトを作ったり、接続したり、いろいろなことができるのですが、あるモジュールから次のモジュールへは常に文字列データを渡しています。

from maya import cmds

loc = cmds.spaceLocator()[0]
sphere = cmds.polySphere()[0]
cmds.connectAttr("{0}.translate".format(loc), "{0}.translate".format(sphere))
trsValue = cmds.getAttr("{0}.translate".format(loc))
print(type(trsValue))

これらのコードの数行を見ると、オブジェクトと簡単な接続を行うだけで余計な手間がかかっていることがわかります。

次のコードは全く同じことをしています。

from cmdWrapper import cmds

loc = cmds.spaceLocator()[0]
sphere = cmds.polySphere()[0]
loc.translate.connect(sphere.translate)
trsValue = loc.getT() #< 変換値を取得するための変換専用コマンド (ローカルまたはワークスペース) 
print(type(trsValue))

ここでは loc と sphere 変数がラップされたデータを保持しています。必要なデータにアクセスすれば、文字列フォーマットの必要性を回避することができます。この場合、translate属性に直接アクセスします。この属性は他の属性と接続する機能を持っており、この場合は球の属性と接続します。

他にもたくさんの機能が含まれていますので、お気軽にチェックしてみてください。