Render.ru

Как интегрировать скрипт в шаблон панели Blender

Ted Ryabov

Пользователь сайта
Рейтинг
2
#1
Приветствую!
Я совсем новичок в Python, занялся его изучением неделю назад, чтобы написать себе для Блендера небольшой скрипт, который подсчитывает и выдает количество объектов в сцене по категориям:
Python:
import bpy
from collections import defaultdict
counter = defaultdict(int)
for obj in bpy.data.collections['Stands'].all_objects:
    dot_split = obj.name.split('.')
    counter[dot_split[0].split('.')[0].strip()] += 1
    
for name, count in counter.items():
    print(f"{name:35} | {count:1d}")
В консоли результат выглядит так:
1671454870819.png


Теперь я хочу сделать так, чтобы эта информация выводилась автоматически в отдельной панели. Я нашел в Text Editor шаблоны различных панелей, но я вообще не могу понять, спустя три дня попыток разобраться, как интегрировать свой скрипт в скрипт панели, например, той же UI_Panel_Simple
Python:
import bpy

class HelloWorldPanel(bpy.types.Panel):
    """Creates a Panel in the Object properties window"""
    bl_label = "Hello World Panel"
    bl_idname = "OBJECT_PT_hello"
    bl_space_type = 'PROPERTIES'
    bl_region_type = 'WINDOW'
    bl_context = "object"

    def draw(self, context):
        layout = self.layout

        obj = context.object

        row = layout.row()
        row.label(text="Hello world!", icon='WORLD_DATA')

        row = layout.row()
        row.label(text="Active object is: " + obj.name)
        row = layout.row()
        row.prop(obj, "name")

        row = layout.row()
        row.operator("mesh.primitive_cube_add")


def register():
    bpy.utils.register_class(HelloWorldPanel)


def unregister():
    bpy.utils.unregister_class(HelloWorldPanel)


if __name__ == "__main__":
    register()
Прошу, помогите мне разобраться и сделать так, чтобы в этой панели выводились данные, как выше в консоли...
 
Сверху