Нажатие на кнопку «Purge» чистит текущую открытую сцену — удаляет из нее все неиспользуемые объекты (меши, ноды, материалы, текстуры и т.д.). Однако эта кнопка расположена очень неудобно, в хедере Аутлайнера и видна только в режиме «Orphan Data». Для быстрого доступа к этой кнопке ее можно вынести в хедер 3D вьюпорта.
Нажатие на кнопку «Purge» вызывает оператор «outliner.orphans_purge».
Напишем функцию для отрисовки кнопки, которая будет вызывать этот же самый оператор:
|
1 2 |
def purge_button(self, context): self.layout.operator("outliner.orphans_purge", text="Purge") |
Добавим вызов этой функции в хедер окна 3D вьюпорта:
|
1 |
bpy.types.VIEW3D_HT_tool_header.prepend(purge_button) |
Полный код:
|
1 2 3 4 5 6 |
import bpy def purge_button(self, context): self.layout.operator("outliner.orphans_purge", text="Purge") bpy.types.VIEW3D_HT_tool_header.prepend(purge_button) |
После выполнения этого кода в текстовом редакторе (Text Editor) в хедер 3D вьюпорта будет добавлена кнопка «Purge», которая будет вызывать удаление неиспользуемых объектов точно так же, как из Аутлайнера.

.blend file on Patreon
Спасибо. Очень помог.
А как разместить кнопку не в начале, а в центре или конце?
В конце — использовать append вместо prepend.
Чтобы вставить кнопку в середину уже существуюего набора в меню, нужно полностью его переопределить на кастомное.
Спасибо!