2011/12/26

シーン中のすべての~を取得

ずっと昔にどっかで見て使ったけどすっかり忘れちゃってた方法を、必要にかられて思い出しました。
次はもうちょっとすばやく思い出せるようにメモ。
シーン中のすべてのエクスプレッション、とかすべてのコンストレイン、とか探したくならないですか?
そんなときには「Application.FindObjects」らしいです。

シーン中のすべてのエクスプレッションを取得するには以下のようにするそうです。過去の自分によれば。
from siutils import *
oExps = si.FindObjects('', '{12723EB2-7DDB-11D0-A57F-00A0C91412DE}')
for i in oExps:
    print i.Definition.Value
すべてのPoseコンストレインはこう。
from siutils import *
oPoseCnss = si.FindObjects('', '{D42BBF71-3C47-11D2-8B42-00A024EE586F}')
for i in oPoseCnss:
    print i
この意味不明な文字はsiObjectCLSIDというものらしいです。
以下で選択オブジェクトのsiObjectCLSIDが取得できます。
from siutils import *
repo = siut.DataRepository
print repo.GetIdentifier(si.Selection(0), 3)

と、ここまで書いておそらくjunkiさんのページで見たのだと思い出しました。
ほんとにいつもお世話になりっぱなしです。