mirror of
https://projects.blender.org/blender/blender.git
synced 2025-01-22 15:32:15 -05:00
98986c6562
Use modern/preferred string formatting for user facing scripts.
63 lines
1.9 KiB
Python
63 lines
1.9 KiB
Python
"""
|
|
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}".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?",
|
|
)
|