--

--

コメント

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

このコメントは管理者の承認待ちです

06

21

04:24

このコメントは管理者の承認待ちです

05

08

01:37

このコメントは管理者の承認待ちです

07

30

05:11

このコメントは管理者の承認待ちです

08

13

11:58

このコメントは管理者の承認待ちです

08

17

00:57

このコメントは管理者の承認待ちです

08

21

17:38

管理者にだけ表示を許可する

この記事のトラックバックURL

http://miste.blog6.fc2.com/tb.php/75-2e17477c

04

14

コメント

FindChildrenの謎

FindChildrenメソッドを使っていて最近気づいた謎。
私はスクリプト書き始めてまだ1年そこらしか立ってないので、私が知らないだけかも知れませんが・・・。
たとえば、適当に2本のボーンを持つスケルトンを書いてから、そのChainRootを選択して以下のスクリプトを実行すると、
app = Application
oSel = app.Selection(0)
oChildren = oSel.FindChildren("","")
for oChild in oChildren:
  app.Logmessage(oChild) 

# INFO : bone
# INFO : bone1
# INFO : eff


とまあこんな感じに選択されたChainRootを含めずにその子を返してくれます

但し、FindChildren("","")の部分をFindChildren("*","")に書き換えると

app = Application
oSel = app.Selection(0)
oChildren = oSel.FindChildren("*","")
for oChild in oChildren:
  app.Logmessage(oChild) 

# INFO : root
# INFO : bone
# INFO : bone1
# INFO : eff


このように選択されたChainRootも帰ってきます。

ただ、この現象はFindChildrenの第二引数を指定しない場合に限られるようです。

元々FindChildrenは引数に指定したもので検索し、その検索に引っかかった親と子をコレクションに入れるものなので、選択した親が入っている方が正解なのですが・・・。(あえて親を含めないFindChildren2があるくらいですし)  

メソッド内部の処理の関係なんだとは思いますが、なんか不思議な仕様にプログラミング素人は感じる今日この頃でした。
スポンサーサイト

このコメントは管理者の承認待ちです

06

21

04:24

このコメントは管理者の承認待ちです

05

08

01:37

このコメントは管理者の承認待ちです

07

30

05:11

このコメントは管理者の承認待ちです

08

13

11:58

このコメントは管理者の承認待ちです

08

17

00:57

このコメントは管理者の承認待ちです

08

21

17:38

管理者にだけ表示を許可する

この記事のトラックバックURL

http://miste.blog6.fc2.com/tb.php/75-2e17477c

Designed by

Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。