""" 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 View-port'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}".format( 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?", )