In these days I have been checking how to create add-ons for Blender. One of the first things I have tried is to create a panel that displays an operator. The operator has a custom property that I would like to control using a slider.
I am able to show the slider but it does not move. Could you help to spot what I am doing wrong?
import bpy
from bpy.types import Panel
from bpy.types import Operator
class Createoper1(Operator):
bl_idname = "wm.oper1"
bl_label = "Create world oper1"
bl_options = {'REGISTER'}
oper1_size = bpy.props.FloatProperty(name = "oper1 size",default=10.0, min=0 , max = 100)
def execute(self, context):
for obj in bpy.data.objects:
if obj.name=='oper1':
return {'FINISHED'}
bpy.context.scene.use_gravity = True
bpy.ops.mesh.primitive_plane_add(radius=self.oper1_size, view_align=False, enter_editmode=False, location=(0, 0, 0), layers=(True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False))
plane = bpy.context.selected_objects[0]
plane.name= "oper1"
return {'FINISHED'}
# Class for the panel, derived from panel
class BendBotPanel(Panel):
"""Creates a Panel in the Object properties window"""
bl_space_type = 'VIEW_3D'
bl_region_type = 'TOOLS'
bl_label = "BlenBot"
bl_context = "objectmode"
bl_category = 'Robotics'
# UI elements
def draw(self, context):
layout = self.layout
box = layout.box()
box.label("Create oper1")
row=layout.row()
#row.label(text="Size oper1")
oper1_op = box.operator('wm.oper1', text='Insert oper1')
box.prop(oper1_op, 'oper1_size', slider=True)
# Register
def register():
bpy.utils.register_class(Createoper1)
bpy.utils.register_class(BendBotPanel)
# Unregister
def unregister():
bpy.utils.unregister_class(BendBotPanel)
bpy.utils.unregister_class(Createoper1)
# Needed to run script in Text editor
if __name__=='__main__':
register()
Thank you