通常、選択を取得する時に「cmds.ls(sl=True, fl=True)」っとすることが多いかと思いますが、これではコンポーネントのID順になってしまいます。
だけど、、、
選択した順番で
取得したい!!
と思いませんか!?そんな時に便利な方法です!(`・ω・´)ゞ
コチラは、AUTODESK KNOWLEDGE NETWORKでも紹介されている「lsコマンドで、選択したコンポーネント(頂点、エッジ、フェース)の名前を選択した順番で取得したい」を元に、使いやすくしたものになります。
lsコマンド
Maya2012から、「cmds.ls」にフラグ「orderedSelection(os)」が追加されたようで、コレを使って「cmds.ls(os=True, fl=True)」とすることで、選択した順番で取得できるようです!
が!
コレを使うには、下記の「Preferences」の「Selection」にある「Track selection order」がONの場合に有効になるようです。
ツールを使う人に設定してもらうっというのは、現実てきではないですよね、、、(´・ω・`)
こちらの設定は、コマンドからも設定・取得することができますので、ツールで設定を書き換えてしまいたいっと思います!
関数の作成
選択の取得をする度に、「Track selection order」が有効になっているか確認するコードを書くのはアレなので、関数化したいと思います(`・ω・´)ゞ
from maya import cmds def getOrderedSelection(): # Track selection orderが有効になっているか確認 if not cmds.selectPref(q=True, tso=True): # Track selection orderを有効にする cmds.selectPref(tso=True) # フラグosを使って、選択を取得し返す。 return cmds.ls(os=True, fl=True)