Версия 2.8 близится к бета-версии. По большей части (а может и весь) API устаканился и пришло время для перевода аддонов на новую версию. Мы с вами сейчас рассмотрим пример простого аддона для Blender 2.8. Это даст представление, что глобально поменялось в написании аддонов, и будет неплохой точкой для старта рефакторинга старых наработок.
Аддон будет добавлен в N-панель во вкладку “My Addon”. Панель аддона будет содержать чекбокс “Check Me!” и кнопку “Send Message”. При нажатии кнопки в панели состояния (в нижней части экрана будет выведено сообщение) “It’s Work! Bool is True” или “It’s Work! Bool is False”, в зависимости от состояние чекбокса.

bl_info = { "name": "Simple Addon 2.80", "description": "Addon writing for 2.8", "author": "Ivan 'mrven' Vostrikov", "version": (1, 0, 0), "blender": (2, 80, 0), "location": "3D View > Toolbox", "category": "Object", } import bpy #Импортируем необходимые types и props для удобства работы #Это избавит нас от необходимости каждый раз писать bpy.types и bpy.props при обращении к этим классам from bpy.types import ( Operator, Panel, PropertyGroup, ) from bpy.props import ( BoolProperty, PointerProperty, ) #Класс Send_Message выполняет основную логику аддона class Send_Message(Operator): """Just Send Message""" bl_idname = "object.send_message" bl_label = "Send Message" bl_options = {'REGISTER', 'UNDO'} def execute(self, context): #Сокращение для обращения к свойствам (Property) аддона simple_addon = context.scene.simple_addon #Проверяем состояние булева свойства test_bool #В зависимости от состояния выводим разные сообщения if simple_addon.test_bool: self.report({'INFO'}, 'It\'s Work! Bool is True') else: self.report({'INFO'}, 'It\'s Work! Bool is False') return {'FINISHED'} #Класс, реализующий панель аддона class VIEW3D_PT_Simple_Addon(Panel): bl_space_type = 'VIEW_3D' bl_region_type = 'UI' bl_category = 'My Addon' bl_label = "Simple Addon" bl_options = {'DEFAULT_CLOSED'} def draw(self, context): layout = self.layout #Сокращение для обращения к свойствам (Property) аддона simple_addon = context.scene.simple_addon #Чекбокс, который устанавливает свойство test_bool layout.prop(simple_addon, "test_bool", text="Check Me!") #Кнопка, которая вызывает наш основной класс Send_Message layout.operator("object.send_message", text="Send Message") #Класс для объявления свойств #Одно из заметных изменений. Раньше они объявлялись в register и прописывались дополнительно в unregister #Теперь это делается в отдельном классе (с немного другим синтаксисом) и уже этот класс вызывается в register и unregister class SimpleAddonProps(PropertyGroup): test_bool: BoolProperty( name="Test Bool", description="Check Me!", default=False ) #Объявление классов для регистрации: операторы, панели, свойства и пр. classes = ( VIEW3D_PT_Simple_Addon, SimpleAddonProps, Send_Message, ) #Регистрация классов def register(): for cls in classes: bpy.utils.register_class(cls) #Создание класса и линкование свойств к этому классу bpy.types.Scene.simple_addon = PointerProperty(type=SimpleAddonProps) #Удаление объявленных классов def unregister(): for cls in reversed(classes): bpy.utils.unregister_class(cls) del bpy.types.Scene.simple_addon if __name__ == "__main__": register()