diff --git a/src/blenderbim/blenderbim/bim/module/root/operator.py b/src/blenderbim/blenderbim/bim/module/root/operator.py index fccbb2c850..ecf1d95753 100644 --- a/src/blenderbim/blenderbim/bim/module/root/operator.py +++ b/src/blenderbim/blenderbim/bim/module/root/operator.py @@ -92,7 +92,10 @@ class ReassignClass(bpy.types.Operator): return IfcStore.execute_ifc_operator(self, context) def _execute(self, context): - objects = [bpy.data.objects.get(self.obj)] if self.obj else context.selected_objects + if self.obj: + objects = [bpy.data.objects.get(self.obj)] + else: + objects = set(context.selected_objects + [context.active_object]) self.file = IfcStore.get_file() predefined_type = context.scene.BIMRootProperties.ifc_predefined_type if predefined_type == "USERDEFINED": @@ -101,11 +104,9 @@ class ReassignClass(bpy.types.Operator): product = ifcopenshell.api.run( "root.reassign_class", self.file, - **{ - "product": self.file.by_id(obj.BIMObjectProperties.ifc_definition_id), - "ifc_class": context.scene.BIMRootProperties.ifc_class, - "predefined_type": predefined_type, - }, + product=self.file.by_id(obj.BIMObjectProperties.ifc_definition_id), + ifc_class=context.scene.BIMRootProperties.ifc_class, + predefined_type=predefined_type, ) obj.name = "{}/{}".format(product.is_a(), getattr(product, "Name", "None")) tool.Ifc.link(product, obj) diff --git a/src/ifcopenshell-python/ifcopenshell/api/root/reassign_class.py b/src/ifcopenshell-python/ifcopenshell/api/root/reassign_class.py index ae2843479d..3c93eeee80 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/root/reassign_class.py +++ b/src/ifcopenshell-python/ifcopenshell/api/root/reassign_class.py @@ -80,11 +80,12 @@ class Usecase: element.ObjectType = self.settings["predefined_type"] if element.is_a("IfcTypeProduct"): for typed_element in ifcopenshell.util.element.get_types(element) or []: + ifc_class = self.settings["ifc_class"].removesuffix("Type").removesuffix("Style") ifcopenshell.api.run( "root.reassign_class", self.file, product=typed_element, - ifc_class=self.settings["ifc_class"].strip("Type"), + ifc_class=ifc_class, predefined_type= self.settings["predefined_type"] ) return element