Копирование объектов в буфер обмена вызывается в Blender точно так же, как и во всех остальных приложениях: нажатием комбинации клавиш Ctrl + c, а вставка из буфера обмена – Ctrl + v. Однако, интересной особенностью использования буфера обмена в Blender является то, что на самом деле системный буфер обмена не используется.
Автор исследования: Andrej.
При нажатии клавиш Ctrl + c в окне 3D вьюпорта в API Blender вызывается оператор view3d.copybuffer().
Вызвать оператор копирования через Python API можно следующим образом:
1 |
bpy.ops.view3d.copybuffer() |
В процессе выполнения оператора Blender в системной временной директории создает отдельный файл copybuffer.blend.
1 |
c:\Users\_WINDOWS_USER_NAME_\AppData\Local\Temp\copybuffer.blend |
В который помещает выделенные объекты из текущей сцены.
Это обычный файл Blender и его можно открыть для просмотра и редактирования.
Сохраненные в файл объекты не добавлены в сцену, а просто присутствую в списке объектов Objects.
При нажатии пользователем комбинации клавиш Ctrl + v, вызывается оператор view3d.pastebuffer().
Его также можно вызвать через Python API.
1 2 3 |
bpy.ops.view3d.pastebuffer( autoselect=True, active_collection=True ) |
Параметр autoselect отвечает за то, что вставленные объекты будут сразу выделены, а active_collection – за то что они будут добавлены в текущую активную коллекцию.
При выполнении оператора Blender просто импортирует объекты в сцену из ранее сохраненного во временную директорию файла copybuffer.blend.
Таким образом осуществляется копирование и вставка объектов без использования системного буфера обмена.
С одной стороны в этом есть свои преимущества, копирование текста или использование буфера обмена в других приложениях не нарушает процесс копирования/вставки в Blender. С другой стороны, файл copybuffer.blend может быть отредактирован и тогда при вставке будут вставлены совсем не те объекты, которые копировались изначально. Или же этот файл может быть совсем удален, если, например, у пользователя настроена автоматическая очистка системной временной директории, и тогда вставка не будет произведена вовсе.