From 759e134e3bcede883fc0e957ad174b6c4e35d8b4 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Tue, 2 Aug 2022 19:31:32 +1000 Subject: [PATCH] Check and correct for object mode in operator, not in poll, as operator may be called headlessly (e.g. in export function). Note that after the operator has been refactored to use the core / tool design pattern, the poll code may return if necessary. --- src/blenderbim/blenderbim/bim/module/geometry/operator.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/module/geometry/operator.py b/src/blenderbim/blenderbim/bim/module/geometry/operator.py index 99908cc927..14b67b7203 100644 --- a/src/blenderbim/blenderbim/bim/module/geometry/operator.py +++ b/src/blenderbim/blenderbim/bim/module/geometry/operator.py @@ -130,10 +130,6 @@ class UpdateRepresentation(bpy.types.Operator): obj: bpy.props.StringProperty() ifc_representation_class: bpy.props.StringProperty() - @classmethod - def poll(cls, context): - return context.active_object and context.active_object.mode == "OBJECT" - def execute(self, context): return IfcStore.execute_ifc_operator(self, context) @@ -141,6 +137,10 @@ class UpdateRepresentation(bpy.types.Operator): if not ContextData.is_loaded: ContextData.load(IfcStore.get_file()) + if context.active_object and context.active_object.mode != "OBJECT": + # Ensure mode is object to prevent invalid mesh data causing CTD + bpy.ops.object.mode_set(mode="OBJECT", toggle=False) + objs = [bpy.data.objects.get(self.obj)] if self.obj else context.selected_objects self.file = IfcStore.get_file()