3

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

Andreas
  • 31
  • 3

0 Answers0