From e71ee988bf45510a009d0c46ead7aa0a2f4e9d63 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Mon, 10 Apr 2023 18:05:13 +0500 Subject: [PATCH] Fixed error on disabling BlenderBIM addon Error was occuring because macros doesn't have `is_registered` attribute. Error: Traceback (most recent call last): File "C:\Software\Steam\steamapps\common\Blender\3.5\scripts\modules\addon_utils.py", line 421, in disable mod.unregister() File "\scripts\addons\blenderbim\__init__.py", line 45, in unregister blenderbim.bim.unregister() File "\scripts\addons\blenderbim\bim\__init__.py", line 192, in unregister if cls.is_registered is not False: AttributeError: type object 'OverrideDuplicateMoveMacro' has no attribute 'is_registered' Still getting some other error on disabling the addon, seems to happen due ongoing drawing system restructure. Error: Traceback (most recent call last): File "C:\Software\Steam\steamapps\common\Blender\3.5\scripts\modules\addon_utils.py", line 421, in disable mod.unregister() File "\addons\blenderbim\__init__.py", line 45, in unregister blenderbim.bim.unregister() File "\addons\blenderbim\bim\__init__.py", line 177, in unregister if bpy.data.scenes['Scene'].BIMProperties.module_visibility['drawing'].is_visible: KeyError: 'bpy_prop_collection[key]: key "drawing" not found' --- src/blenderbim/blenderbim/bim/__init__.py | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/__init__.py b/src/blenderbim/blenderbim/bim/__init__.py index 859aa34183..7e4e17a820 100644 --- a/src/blenderbim/blenderbim/bim/__init__.py +++ b/src/blenderbim/blenderbim/bim/__init__.py @@ -172,18 +172,16 @@ def register(): def unregister(): for cls in reversed(classes): - if ( #these panels haven't the cls.is_registered attribute - cls == blenderbim.bim.module.drawing.gizmos.ExtrusionWidget or - cls == blenderbim.bim.module.drawing.gizmos.ExtrusionGuidesGizmo or - cls == blenderbim.bim.module.drawing.gizmos.DimensionLabelGizmo or - cls == blenderbim.bim.module.drawing.gizmos.DotGizmo or - cls == blenderbim.bim.module.drawing.gizmos.UglyDotGizmo - ): - if bpy.data.scenes['Scene'].BIMProperties.module_visibility['drawing'].is_visible is True: + # GizmoGroup, Gizmo and Macro doesn't have cls.is_registered attribute + if set((bpy.types.GizmoGroup, bpy.types.Gizmo)) & set(cls.__bases__): + if bpy.data.scenes["Scene"].BIMProperties.module_visibility["drawing"].is_visible: bpy.utils.unregister_class(cls) - continue - else: - continue + continue + + if bpy.types.Macro in cls.__bases__: + bpy.utils.unregister_class(cls) + continue + if cls.is_registered is not False: bpy.utils.unregister_class(cls)