今回はオブジェクトの親子付け。
スケマティックビューで確認したときのコレです。

実行結果

実行結果

今回のスクリプトは実行すると実行結果の画像のような階層構造ができあがります。
コンストレイントのParent/Childを期待した方はもう少し待ってください。
FBPropertyListを使える用になってから勉強しましょう。

■オブジェクトの親子付け

[python]
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from pyfbsdk import FBModelCube

lName = "Cube_Parent"
lParent = FBModelCube(lName)
lParent.Show = True

lName = "Cube_Child"
lChildA = FBModelCube(lName)
lChildA.Show = True

lChildB = FBModelCube(lName) #同一名のオブジェクトを作成すると「 1」が名前の語尾に付加されます。
lChildB.Show = True

lChildA.Parent = lParent #lChildAの親をlParentにします。
lParent.Children.append(lChildB) #lParentの子階層にlChildBを追加します。

##lChildB.Parent = None #親子付けを解除する
##lIdx = len(lParent.Children)-1 #最後に追加されたオブジェクトのindex番号
##lParent.Children[lIdx].Parent = None #親子付けを解除する
[/python]

新しいクラスは出てこないもののFBModelクラスに含まれる2つのAttributeを使用しています。

Parent
Children

親子付けをするにはどちらを使っても大丈夫。

ただし、親子付けを解除する場合に注意が必要。
下記のアトリビュートを使ってChildrenリストから削除する場合、

FBDelete()を使ってChildrenリストから取り除いたオブジェクトを削除しないとシーンが壊れます。

pop()
remove()
removeAll()

2010ではそんなことなかった気が・・・
確認しておきます。

 

※追記

2010で確認したところ、シーンが壊れるとまではいかなかったもののオブジェクトを消すのに右クリック→deleteでしか消せなくなりました。

2013ではオブジェクトを右クリックした瞬間落ちます!

原因はよくわかりません!ちゃんと調べてないです(ぁ…

憶測でものを言うとFBPropertyListModelTemplateで扱う配列は一般的な配列とは扱いが違うから?

 

データが壊れているようなのでpop(),remove(),removeAll()は使わないのが賢明なようです。