From 27b71a9d074e6e91a4a3b184e9e779c130f7a9de Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Mon, 18 Sep 2023 23:14:52 +1000 Subject: [PATCH] Fix #3752. Accommodate situations where layouts don't match IFC. --- .../blenderbim/bim/module/drawing/sheeter.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/module/drawing/sheeter.py b/src/blenderbim/blenderbim/bim/module/drawing/sheeter.py index f452bcc158..ee0e5506e8 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/sheeter.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/sheeter.py @@ -345,8 +345,12 @@ class SheetBuilder: def build_drawings(self, root, sheet): for view in root.findall('{http://www.w3.org/2000/svg}g[@data-type="drawing"]'): drawing_id = int(view.attrib["data-id"]) - reference = tool.Ifc.get().by_id(int(view.attrib["data-id"])) - drawing = tool.Ifc.get().by_id(view.attrib["data-drawing"]) + try: + reference = tool.Ifc.get().by_id(int(view.attrib["data-id"])) + drawing = tool.Ifc.get().by_id(view.attrib["data-drawing"]) + except: + # Perhaps the SVG has outdated content or is edited externally which we cannot control. + continue images = view.findall("{http://www.w3.org/2000/svg}image") @@ -387,8 +391,12 @@ class SheetBuilder: def build_schedules(self, root, sheet): for view in root.findall('{http://www.w3.org/2000/svg}g[@data-type="schedule"]'): - reference = tool.Ifc.get().by_id(int(view.attrib["data-id"])) - schedule = tool.Ifc.get().by_id(int(view.attrib["data-schedule"])) + try: + reference = tool.Ifc.get().by_id(int(view.attrib["data-id"])) + schedule = tool.Ifc.get().by_id(int(view.attrib["data-schedule"])) + except: + # Perhaps the SVG has outdated content or is edited externally which we cannot control. + continue images = view.findall("{http://www.w3.org/2000/svg}image")