Ссылки на объекты ломаются при использовании отмены ctrl+z

В линейке Blender 2.8x система отмены операций undo/redo (ctrl+z / ctrl+shift+z) была полностью переделана по сравнению с линейкой 2.7x. Одним из результатов такого изменения API является то, что при выполнении операции отмены все объекты в сцене перестраиваются заново – текущий объект уничтожается, а вместо него создается совершенно новый объект. Ссылки, которые указывали на старый объект, до выполнения операции отмены, после нее указывают на невалидный объект с которым больше нельзя работать.

Такое поведение описано в официальной документации Blender Python API.

Проверить на практике это можно выполнив простой код в Python Console:

Также теряют целостность любые списки объектов:

Чем все это оборачивается на практике?

Остерегайтесь использовать в коде долговременные ссылки на объекты и списки объектов. Если пользователь имеет возможность нажать ctrl+z в течение времени жизни такой ссылки или списка – они придут в негодность!

Nikita

Автор: Nikita

Blender add-ons developer and articles writer.