123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- """
- Operator Example
- ++++++++++++++++
- A common use of custom properties is for python based :class:`Operator`
- classes. Test this code by running it in the text editor, or by clicking the
- button in the 3D Viewport's Tools panel. The latter will show the properties
- in the Redo panel and allow you to change them.
- """
- import bpy
- class OBJECT_OT_property_example(bpy.types.Operator):
- bl_idname = "object.property_example"
- bl_label = "Property Example"
- bl_options = {'REGISTER', 'UNDO'}
- 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):
- self.report(
- {'INFO'}, 'F: %.2f B: %s S: %r' %
- (self.my_float, self.my_bool, self.my_string)
- )
- print('My float:', self.my_float)
- print('My bool:', self.my_bool)
- print('My string:', self.my_string)
- return {'FINISHED'}
- class OBJECT_PT_property_example(bpy.types.Panel):
- bl_idname = "object_PT_property_example"
- bl_label = "Property Example"
- bl_space_type = 'VIEW_3D'
- bl_region_type = 'UI'
- bl_category = "Tool"
- def draw(self, context):
- # You can set the property values that should be used when the user
- # presses the button in the UI.
- props = self.layout.operator('object.property_example')
- props.my_bool = True
- props.my_string = "Shouldn't that be 47?"
- # You can set properties dynamically:
- if context.object:
- props.my_float = context.object.location.x
- else:
- props.my_float = 327
- bpy.utils.register_class(OBJECT_OT_property_example)
- bpy.utils.register_class(OBJECT_PT_property_example)
- # Demo call. Be sure to also test in the 3D Viewport.
- bpy.ops.object.property_example(
- my_float=47,
- my_bool=True,
- my_string="Shouldn't that be 327?",
- )
|