examples for bpy.props

This commit is contained in:
Campbell Barton 2011-02-18 14:27:18 +00:00
parent d9bca3d491
commit 251d27110b
6 changed files with 114 additions and 5 deletions

View File

@ -0,0 +1,31 @@
"""
Operator Example
++++++++++++++++
A common use of custom properties is for python based :class:`Operator` classes.
"""
import bpy
class DialogOperator(bpy.types.Operator):
bl_idname = "object.dialog_operator"
bl_label = "Property Example"
my_float = bpy.props.FloatProperty(name="Some Floating Point")
my_bool = bpy.props.BoolProperty(name="Toggle Option")
my_string = bpy.props.StringProperty(name="String Value")
def execute(self, context):
print("Dialog Runs")
return {'FINISHED'}
def invoke(self, context, event):
wm = context.window_manager
return wm.invoke_props_dialog(self)
bpy.utils.register_class(DialogOperator)
# test call
bpy.ops.object.dialog_operator('INVOKE_DEFAULT')

View File

@ -0,0 +1,27 @@
"""
PropertyGroup Example
+++++++++++++++++++++
PropertyGroups can be used for collecting custom settings into one value
to avoid many indervidual settings mixed in together.
"""
import bpy
class MaterialSettings(bpy.types.PropertyGroup):
my_int = bpy.props.IntProperty()
my_float = bpy.props.FloatProperty()
my_string = bpy.props.StringProperty()
bpy.utils.register_class(MaterialSettings)
bpy.types.Material.my_settings = \
bpy.props.PointerProperty(type=MaterialSettings)
# test the new settings work
material = bpy.data.materials[0]
material.my_settings.val_int = 5
material.my_settings.val_float = 3.0
material.my_settings.my_string = "Foo"

View File

@ -0,0 +1,33 @@
"""
Collection Example
++++++++++++++++++
Custom properties can be added to any subclass of an :class:`ID`,
:class:`Bone` and :class:`PoseBone`.
"""
import bpy
# Assign a collection
class SceneSettingItem(bpy.types.PropertyGroup):
name = bpy.props.StringProperty(name="Test Prop", default="Unknown")
value = bpy.props.IntProperty(name="Test Prop", default=22)
bpy.utils.register_class(SceneSettingItem)
bpy.types.Scene.my_settings = \
bpy.props.CollectionProperty(type=SceneSettingItem)
# Assume an armature object selected
print("Adding 3 values!")
my_item = bpy.context.scene.my_settings.add()
my_item.name = "Spam"
my_item.value = 1000
my_item = bpy.context.scene.my_settings.add()
my_item.name = "Eggs"
my_item.value = 30
for my_item in bpy.context.scene.my_settings:
print(my_item.name, my_item.value)

View File

@ -0,0 +1,18 @@
"""
Assigning to Existing Classes
+++++++++++++++++++++++++++++
Custom properties can be added to any subclass of an :class:`ID`,
:class:`Bone` and :class:`PoseBone`.
These properties can be animated, accessed by the user interface and python
like blenders existing properties.
"""
import bpy
# Assign a custom property to an existing type.
bpy.types.Material.custom_float = bpy.props.FloatProperty(name="Test Prob")
# Test the property is there.
bpy.data.materials[0].custom_float = 5.0

View File

@ -7,8 +7,8 @@ import bpy
class DialogOperator(bpy.types.Operator):
bl_idname = "object.modal_operator"
bl_label = "Simple Modal Operator"
bl_idname = "object.dialog_operator"
bl_label = "Simple Dialog Operator"
my_float = bpy.props.FloatProperty(name="Some Floating Point")
my_bool = bpy.props.BoolProperty(name="Toggle Option")
@ -28,4 +28,4 @@ class DialogOperator(bpy.types.Operator):
bpy.utils.register_class(DialogOperator)
# test call
bpy.ops.object.modal_operator('INVOKE_DEFAULT')
bpy.ops.object.dialog_operator('INVOKE_DEFAULT')

View File

@ -61,7 +61,7 @@ else:
"bpy.app",
"bpy.path",
"bpy.data",
# "bpy.props",
#"bpy.props",
"bpy.utils",
"bpy.context",
# "bpy.types", # supports filtering
@ -74,7 +74,7 @@ else:
"mathutils.geometry",
)
FILTER_BPY_TYPES = ("PropertyGroup", "Panel", "Menu", "Operator") # allow
FILTER_BPY_TYPES = ("PropertyGroup", "Panel", "Menu", "Operator", "RenderEngine") # allow
FILTER_BPY_OPS = ("import.scene", ) # allow
# for quick rebuilds