キューブの面と同じ番号のブレンダープロパティを定義する際に、手動でそれらを無視することはありません。サイクル内のブレンダーのプロパティを定義する
したがって、このような何か:
atr = bpy.types.Scene
for i in range(0,20):
//Define a intProperty to do stuffs.
とパネル描画機能で個別にそれらを呼び出すことは可能ですか?
キューブの面と同じ番号のブレンダープロパティを定義する際に、手動でそれらを無視することはありません。サイクル内のブレンダーのプロパティを定義する
したがって、このような何か:
atr = bpy.types.Scene
for i in range(0,20):
//Define a intProperty to do stuffs.
とパネル描画機能で個別にそれらを呼び出すことは可能ですか?
新しいプロパティをブレンダーのオブジェクトに追加するには、2つの方法があります。単純な動的な方法は、オブジェクトが辞書であるかのようにキーに値を割り当てることによってcustom propertiesを使用することです。これは、object propertiesのカスタムプロパティパネルを使用する場合と同じです。あなたは辞書のスタイルを使用し続けるあなたのスクリプトでこの値にアクセスするには - obj['myprop0']
import bpy
obj = bpy.context.object
for i in range(0,20):
obj['myprop'+str(i)] = i
あなたは、たとえば専用のプロパティにint型を割り当てることができるように型チェックができ、より構造化された方法は、property to the object class definitionを追加することですこれらはカスタムプロパティパネルにも表示されますが、「API定義」として表示されます。生成されたプロパティ名でこれを行うには、生成するコードを実行する必要があります。このメソッドは、クラス定義内の他のプロパティと同じようにアクセスし、真のプロパティを作成します - obj.myprop0
import bpy
for i in range(0,20):
cmd = 'bpy.types.Object.myprop{} = bpy.props.IntProperty()'.format(i)
exec(compile(cmd, 'myprops', 'exec'))
は、両方のアプローチは、同じ名前空間を占有するので、あなたは両方の方法で同じプロパティ名を使用する場合はすることに注意してください同じプロパティにアクセスする必要があり、プロパティを表示する両方のメソッドが機能します。 bpy.props
の定義は、辞書スタイルのプロパティよりも優先されます。
各アプローチは、パネルにプロパティを表示するときに少しずつ異なってアクセスされます。辞書スタイルプロパティの場合はrow.prop(obj,'["myprop'+str(i)+'"]')
を使用し、bpy.props
の場合はを使用します。最初の方法では、辞書値にアクセスするのと同じように[]
に含まれるプロパティ名を使用します。
import bpy
class myPanel(bpy.types.Panel):
"""Creates a Panel in the Object properties window"""
bl_label = "My properties Panel"
bl_idname = "OBJECT_PT_myprops"
bl_space_type = 'PROPERTIES'
bl_region_type = 'WINDOW'
bl_context = "object"
def draw(self, context):
layout = self.layout
obj = context.object
row = layout.row()
row.label('dynamic properties')
for i in range(0,20):
row = layout.row()
row.prop(obj,'["myprop'+str(i)+'"]')
row = layout.row()
row.label('structured properties')
for i in range(0,20):
row = layout.row()
row.prop(obj,'myprop'+str(i))
bpy.utils.register_class(myPanel)
[この質問](http://blender.stackexchange.com/q/54038/935)には、新しいプロパティの作成例が含まれています。 – sambler
サイクルでプロパティをどのように作成できるのか疑問に思っていましたが、その質問を見ましたが、どのような方法でも答えは見つけられません。 – Fabrizio