diff --git a/src/blenderbim/blenderbim/bim/module/model/product.py b/src/blenderbim/blenderbim/bim/module/model/product.py index 011fdeedb5..2f044de88c 100644 --- a/src/blenderbim/blenderbim/bim/module/model/product.py +++ b/src/blenderbim/blenderbim/bim/module/model/product.py @@ -439,6 +439,7 @@ class LoadTypeThumbnails(bpy.types.Operator, tool.Ifc.Operator): y_offset = (size / 2) - (height / 2) draw.rectangle([x_offset, y_offset, width + x_offset, height + y_offset], outline="white", width=2) current_thickness = 0 + del thicknesses[-1] for thickness in thicknesses: current_thickness += thickness if element.is_a("IfcSlabType"): diff --git a/src/blenderbim/blenderbim/bim/module/model/ui.py b/src/blenderbim/blenderbim/bim/module/model/ui.py index 979a0150be..6fa5aa670c 100644 --- a/src/blenderbim/blenderbim/bim/module/model/ui.py +++ b/src/blenderbim/blenderbim/bim/module/model/ui.py @@ -76,12 +76,16 @@ class LaunchTypeManager(bpy.types.Operator): row = box.row() row.template_icon(icon_value=relating_type["icon_id"], scale=4) - row = box.row() + row = box.row(align=True) + op = row.operator("bim.add_constr_type_instance", icon="ADD") op.from_invoke = True op.ifc_class = relating_type["ifc_class"] op.relating_type_id = relating_type["id"] + op = row.operator("bim.remove_type", icon="X", text="") + op.element = relating_type["id"] + class BIM_PT_authoring(Panel): bl_label = "Architectural" diff --git a/src/blenderbim/blenderbim/bim/module/type/__init__.py b/src/blenderbim/blenderbim/bim/module/type/__init__.py index 8e5b44357b..b164fc7b5e 100644 --- a/src/blenderbim/blenderbim/bim/module/type/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/type/__init__.py @@ -21,12 +21,13 @@ from . import ui, prop, operator classes = ( operator.AssignType, - operator.UnassignType, - operator.EnableEditingType, operator.DisableEditingType, + operator.EnableEditingType, + operator.RemoveType, operator.SelectSimilarType, - operator.SelectTypeObjects, operator.SelectType, + operator.SelectTypeObjects, + operator.UnassignType, prop.BIMTypeProperties, ui.BIM_PT_type, ) diff --git a/src/blenderbim/blenderbim/bim/module/type/operator.py b/src/blenderbim/blenderbim/bim/module/type/operator.py index bef163ce90..f1130a0a19 100644 --- a/src/blenderbim/blenderbim/bim/module/type/operator.py +++ b/src/blenderbim/blenderbim/bim/module/type/operator.py @@ -166,3 +166,19 @@ class SelectTypeObjects(bpy.types.Operator): if obj: obj.select_set(True) return {"FINISHED"} + + +class RemoveType(bpy.types.Operator, tool.Ifc.Operator): + bl_idname = "bim.remove_type" + bl_label = "Remove Type" + bl_options = {"REGISTER"} + element: bpy.props.IntProperty() + + def _execute(self, context): + element = tool.Ifc.get().by_id(self.element) + obj = tool.Ifc.get_object(element) + ifcopenshell.api.run("root.remove_product", tool.Ifc.get(), product=element) + if obj: + tool.Ifc.unlink(obj=obj) + bpy.data.objects.remove(obj) + return {"FINISHED"} diff --git a/src/blenderbim/blenderbim/tool/cad.py b/src/blenderbim/blenderbim/tool/cad.py index 2c8b17eb0f..9ed290e59a 100644 --- a/src/blenderbim/blenderbim/tool/cad.py +++ b/src/blenderbim/blenderbim/tool/cad.py @@ -112,7 +112,7 @@ class Cad: p3 = p3.to_3d() p4 = p4.to_3d() results = mathutils.geometry.intersect_line_line(p1, p2, p3, p4) - if is_2d: + if is_2d and results: r1, r2 = results return r1.to_2d() if r1 else r1, r2.to_2d() if r2 else r2 return results diff --git a/src/ifcopenshell-python/ifcopenshell/api/project/append_asset.py b/src/ifcopenshell-python/ifcopenshell/api/project/append_asset.py index 93224d8c80..4490b0563f 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/project/append_asset.py +++ b/src/ifcopenshell-python/ifcopenshell/api/project/append_asset.py @@ -158,7 +158,6 @@ class Usecase: return self.added_elements[element.id()] new = self.file.add(element) self.added_elements[element.id()] = new - self.check_inverses(element) for subelement in self.settings["library"].traverse(element): self.check_inverses(subelement) return new