diff --git a/src/blenderbim/blenderbim/bim/module/root/ui.py b/src/blenderbim/blenderbim/bim/module/root/ui.py index f698b9ca75..c69cf4a9ab 100644 --- a/src/blenderbim/blenderbim/bim/module/root/ui.py +++ b/src/blenderbim/blenderbim/bim/module/root/ui.py @@ -40,6 +40,7 @@ class BIM_PT_class(Panel): name += "[{}]".format(data["PredefinedType"]) row = self.layout.row(align=True) row.label(text=name) + row.operator("bim.select_ifc_class", text="", icon="RESTRICT_SELECT_OFF").ifc_class = data["type"] row.operator("bim.copy_class", icon="DUPLICATE", text="") row.operator("bim.unlink_object", icon="UNLINKED", text="") if IfcStore.get_file().by_id(props.ifc_definition_id).is_a("IfcRoot"): diff --git a/src/blenderbim/blenderbim/bim/module/search/operator.py b/src/blenderbim/blenderbim/bim/module/search/operator.py index f4b938d654..192c4a1786 100644 --- a/src/blenderbim/blenderbim/bim/module/search/operator.py +++ b/src/blenderbim/blenderbim/bim/module/search/operator.py @@ -62,15 +62,15 @@ class SelectIfcClass(bpy.types.Operator): bl_idname = "bim.select_ifc_class" bl_label = "Select IFC Class" bl_options = {"REGISTER", "UNDO"} + ifc_class: bpy.props.StringProperty() def execute(self, context): self.file = IfcStore.get_file() - props = context.scene.BIMSearchProperties for obj in context.visible_objects: if not obj.BIMObjectProperties.ifc_definition_id: continue element = self.file.by_id(obj.BIMObjectProperties.ifc_definition_id) - if does_keyword_exist(props.ifc_class, element.is_a()): + if does_keyword_exist(self.ifc_class, element.is_a()): obj.select_set(True) return {"FINISHED"} diff --git a/src/blenderbim/blenderbim/bim/module/search/ui.py b/src/blenderbim/blenderbim/bim/module/search/ui.py index a12b4ace6a..8095ae26eb 100644 --- a/src/blenderbim/blenderbim/bim/module/search/ui.py +++ b/src/blenderbim/blenderbim/bim/module/search/ui.py @@ -32,7 +32,7 @@ class BIM_PT_search(Panel): row = self.layout.row(align=True) row.prop(props, "ifc_class", text="", icon="OBJECT_DATA") - row.operator("bim.select_ifc_class", text="", icon="VIEWZOOM") + row.operator("bim.select_ifc_class", text="", icon="VIEWZOOM").ifc_class = props.ifc_class row.operator("bim.colour_by_class", text="", icon="BRUSH_DATA") row = self.layout.row(align=True) diff --git a/src/ifcopenshell-python/ifcopenshell/api/owner/add_address.py b/src/ifcopenshell-python/ifcopenshell/api/owner/add_address.py index 14d2a48fac..4c00df396b 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/owner/add_address.py +++ b/src/ifcopenshell-python/ifcopenshell/api/owner/add_address.py @@ -6,6 +6,8 @@ class Usecase: self.settings[key] = value def execute(self): + address = self.file.create_entity(self.settings["ifc_class"], "OFFICE") addresses = list(self.settings["assigned_object"].Addresses) if self.settings["assigned_object"].Addresses else [] - addresses.append(self.file.create_entity(self.settings["ifc_class"], "OFFICE")) + addresses.append(address) self.settings["assigned_object"].Addresses = addresses + return address diff --git a/src/ifcopenshell-python/ifcopenshell/api/owner/add_role.py b/src/ifcopenshell-python/ifcopenshell/api/owner/add_role.py index a934f927bb..c08a3899db 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/owner/add_role.py +++ b/src/ifcopenshell-python/ifcopenshell/api/owner/add_role.py @@ -6,6 +6,8 @@ class Usecase: self.settings[key] = value def execute(self): + element = self.file.createIfcActorRole("ARCHITECT") roles = list(self.settings["assigned_object"].Roles) if self.settings["assigned_object"].Roles else [] - roles.append(self.file.createIfcActorRole("ARCHITECT")) + roles.append(element) self.settings["assigned_object"].Roles = roles + return element