Начиная с версии 3.5 в Blender Python API запрещено переопределять базовые операторы.
Теперь нельзя создавать свои операторы со значением параметра bl_idname, таким же как у базовых операторов, заложенных в Blender разработчиками изначально, и рассчитывать, что новый оператор заменит базовый.
При попытке переопределить базовый оператор Blender выдаст ошибку:
RuntimeError: Error: Registering operator class: ‘Override’, bl_idname ‘_bl_idname_’ could not be unregistered
Если для примера мы попробуем создать класс с оператором, переопределяющим оператор удаления объекта из сцены:
1 2 3 4 5 6 7 8 9 10 |
class OverrideDelete(bpy.types.Operator): bl_idname = 'object.delete' bl_label = 'Delete' bl_options = {'REGISTER'} def execute(self, context): print('OVERRIDE DELETING') return {'FINISHED'} bpy.utils.register_class(OverrideDelete) |
То при регистрации оператора в API Blender выдаст ошибку:
RuntimeError: Error: Registering operator class: ‘OverrideDelete’, bl_idname ‘object.delete’ could not be unregistered
и новый оператор не будет зарегистрирован.
Будьте внимательны при разработке аддонов. А если в вашем аддоне используется переопределение базовых операторов – вам будет необходимо внести исправления в код, чтобы ваш аддон мог работать в Blender версии 3.5 и выше.