From e10d92a76fcee4b9b5357beae781a7206b210929 Mon Sep 17 00:00:00 2001 From: Roy-043 Date: Fri, 27 Jan 2023 19:29:47 +0100 Subject: [PATCH] Arch: update Arch.pruneIncluded to include cloned PD Bodies --- src/Mod/Arch/ArchCommands.py | 49 ++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 19 deletions(-) diff --git a/src/Mod/Arch/ArchCommands.py b/src/Mod/Arch/ArchCommands.py index 52796fc611..9b29c6d04b 100644 --- a/src/Mod/Arch/ArchCommands.py +++ b/src/Mod/Arch/ArchCommands.py @@ -729,27 +729,38 @@ def pruneIncluded(objectslist,strict=False): for obj in objectslist: toplevel = True if obj.isDerivedFrom("Part::Feature"): - if not (Draft.getType(obj) in ["Window","Clone","Pipe","Rebar"]): + if Draft.getType(obj) not in ["Window","Clone","Pipe","Rebar"]: for parent in obj.InList: - if parent.isDerivedFrom("Part::Feature") and not (Draft.getType(parent) in ["Space","Facebinder","Window","Roof","Clone","Site","Project"]): - if not parent.isDerivedFrom("Part::Part2DObject"): - # don't consider 2D objects based on arch elements - if hasattr(parent,"Host") and (parent.Host == obj): - pass - elif hasattr(parent,"Hosts") and (obj in parent.Hosts): - pass - elif hasattr(parent,"TypeId") and (parent.TypeId == "Part::Mirroring"): - pass - elif hasattr(parent,"CloneOf"): - if parent.CloneOf: - if parent.CloneOf.Name != obj.Name: - toplevel = False - else: - toplevel = False - else: + if not parent.isDerivedFrom("Part::Feature"): + pass + elif Draft.getType(parent) in ["Space","Facebinder","Window","Roof","Clone","Site","Project"]: + pass + elif parent.isDerivedFrom("Part::Part2DObject"): + # don't consider 2D objects based on arch elements + pass + elif parent.isDerivedFrom("PartDesign::FeatureBase"): + # don't consider a PartDesign_Clone that references obj + pass + elif parent.isDerivedFrom("PartDesign::Body") and obj == parent.BaseFeature: + # don't consider a PartDesign_Body with a PartDesign_Clone that references obj + pass + elif hasattr(parent,"Host") and parent.Host == obj: + pass + elif hasattr(parent,"Hosts") and obj in parent.Hosts: + pass + elif hasattr(parent,"TypeId") and parent.TypeId == "Part::Mirroring": + pass + elif hasattr(parent,"CloneOf"): + if parent.CloneOf: + if parent.CloneOf.Name != obj.Name: toplevel = False - if (toplevel == False) and strict: - if not(parent in objectslist) and not(parent in newlist): + else: + toplevel = False + else: + toplevel = False + + if toplevel == False and strict: + if parent not in objectslist and parent not in newlist: toplevel = True if toplevel: newlist.append(obj)