diff --git a/src/blenderbim/blenderbim/bim/module/drawing/operator.py b/src/blenderbim/blenderbim/bim/module/drawing/operator.py index 9ca530ea86..5f28e663c6 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/operator.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/operator.py @@ -1545,6 +1545,9 @@ class RemoveDrawing(bpy.types.Operator, Operator): removed_drawings = [drawing.id() for drawing in drawings] for drawing in drawings: + sheet_references = tool.Drawing.get_sheet_references(drawing) + for reference in sheet_references: + bpy.ops.bim.remove_drawing_from_sheet(reference=reference.id()) core.remove_drawing(tool.Ifc, tool.Drawing, drawing=drawing) diff --git a/src/blenderbim/blenderbim/tool/drawing.py b/src/blenderbim/blenderbim/tool/drawing.py index aa3af91100..f78862baf9 100644 --- a/src/blenderbim/blenderbim/tool/drawing.py +++ b/src/blenderbim/blenderbim/tool/drawing.py @@ -1835,3 +1835,17 @@ class Drawing(blenderbim.core.tool.Drawing): direction = end - start offset = distance * (direction / np.linalg.norm(direction)) return (start - offset).tolist(), (end + offset).tolist() + + @classmethod + def get_sheet_references(cls, drawing): + sheet_references = [] + drawing_reference = cls.get_drawing_document(drawing) + for sheet in tool.Ifc.get().by_type("IfcDocumentInformation"): + if not sheet.Scope == "SHEET": + continue + references = cls.get_document_references(sheet) + for reference in references: + if reference.Location == drawing_reference.Location: + sheet_references.append(reference) + break + return sheet_references