From 948ffd940e307de5783383ebe920db4549bf4a4e Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Mon, 18 Sep 2023 09:21:55 +0200 Subject: [PATCH] Merge pull request #10712 from Roy-043/Draft-shape2dview-avoid-issues-with-intersecting-solids Draft: shape2dview: avoid issues with intersecting solids --- src/Mod/Draft/draftobjects/shape2dview.py | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/Mod/Draft/draftobjects/shape2dview.py b/src/Mod/Draft/draftobjects/shape2dview.py index 623ae4ba91..14b1b0a510 100644 --- a/src/Mod/Draft/draftobjects/shape2dview.py +++ b/src/Mod/Draft/draftobjects/shape2dview.py @@ -241,12 +241,12 @@ class Shape2DView(DraftObject): else: shtypes.setdefault(o.Material.Name if (hasattr(o,"Material") and o.Material) - else "None",[]).append(o.Shape.copy()) + else "None",[]).extend(o.Shape.SubShapes) elif hasattr(o,'Shape'): if onlysolids: shapes.extend(o.Shape.Solids) else: - shapes.append(o.Shape.copy()) + shapes.extend(o.Shape.SubShapes) for k, v in shtypes.items(): v1 = v.pop() if v: @@ -256,14 +256,14 @@ class Shape2DView(DraftObject): shapes.extend(v1.Solids) else: print("Shape2DView: Fusing Arch objects produced non-solid results") - shapes.append(v1) + shapes.extend(v1.SubShapes) else: for o in objs: if hasattr(o,'Shape'): if onlysolids: shapes.extend(o.Shape.Solids) else: - shapes.append(o.Shape.copy()) + shapes.extend(o.Shape.SubShapes) clip = False if hasattr(obj.Base,"Clip"): clip = obj.Base.Clip @@ -294,12 +294,12 @@ class Shape2DView(DraftObject): if onlysolids: cuts.extend(c.Solids) else: - cuts.append(c) + cuts.extend(c.SubShapes) else: if onlysolids: cuts.extend(sh.Solids) else: - cuts.append(sh.copy()) + cuts.extend(sh.SubShapes) comp = Part.makeCompound(cuts) obj.Shape = self.getProjected(obj,comp,proj) elif obj.ProjectionMode in ["Cutlines", "Cutfaces"]: @@ -331,9 +331,7 @@ class Shape2DView(DraftObject): objs = self.excludeNames(obj,groups.get_group_contents(obj.Base)) for o in objs: if hasattr(o,'Shape'): - if o.Shape: - if not o.Shape.isNull(): - shapes.append(o.Shape) + shapes.extend(o.Shape.SubShapes) if shapes: import Part comp = Part.makeCompound(shapes)