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'
This commit is contained in:
Andrej730
2023-04-10 18:05:13 +05:00
parent 937a5b2c2d
commit e71ee988bf
+9 -11
View File
@@ -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)