From d5ecb9b8eaf0d7eaa2419497ab831e0f06cf005d Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Wed, 1 Mar 2023 22:25:12 +1100 Subject: [PATCH] See #2820. Fix issue where some hatches weren't merged when an object had multiple SVG paths. --- .../blenderbim/bim/module/drawing/operator.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/module/drawing/operator.py b/src/blenderbim/blenderbim/bim/module/drawing/operator.py index 7d8549f02f..fb1bd54eb8 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/operator.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/operator.py @@ -529,10 +529,12 @@ class CreateDrawing(bpy.types.Operator): classes.add(el.attrib["{http://www.ifcopenshell.org/ns}guid"]) is_closed_polygon = False for path in el.findall("{http://www.w3.org/2000/svg}path"): - coords = [[round(float(o), 1) for o in co[1:].split(",")] for co in path.attrib["d"].split()] - if coords[0] == coords[-1]: - is_closed_polygon = True - polygons.append(shapely.Polygon(coords)) + for subpath in path.attrib["d"].split("M")[1:]: + subpath = "M" + subpath.strip() + coords = [[round(float(o), 1) for o in co[1:].split(",")] for co in subpath.split()] + if coords[0] == coords[-1]: + is_closed_polygon = True + polygons.append(shapely.Polygon(coords)) if is_closed_polygon: el.getparent().remove(el)