From 3702820f00236e3e2684b5dfed9472162095c2c4 Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Fri, 29 Jan 2016 00:28:47 -0200 Subject: [PATCH] Arch: Added an IFC pref option to disable clones creation on import --- src/Mod/Arch/ArchComponent.py | 13 ++++++------ src/Mod/Arch/Resources/ui/preferences-ifc.ui | 22 +++++++++++++++++++- src/Mod/Arch/importIFC.py | 3 ++- 3 files changed, 30 insertions(+), 8 deletions(-) diff --git a/src/Mod/Arch/ArchComponent.py b/src/Mod/Arch/ArchComponent.py index b2a0f5ddc..c2ab24abf 100644 --- a/src/Mod/Arch/ArchComponent.py +++ b/src/Mod/Arch/ArchComponent.py @@ -577,12 +577,13 @@ class Component: base = base.fuse(add) elif (Draft.getType(o) == "Window") or (Draft.isClone(o,"Window",True)): - f = o.Proxy.getSubVolume(o) - if f: - if base.Solids and f.Solids: - if placement: - f.Placement = f.Placement.multiply(placement) - base = base.cut(f) + if hasattr(o.Proxy,"getSubVolume"): + f = o.Proxy.getSubVolume(o) + if f: + if base.Solids and f.Solids: + if placement: + f.Placement = f.Placement.multiply(placement) + base = base.cut(f) elif o.isDerivedFrom("Part::Feature"): if o.Shape: diff --git a/src/Mod/Arch/Resources/ui/preferences-ifc.ui b/src/Mod/Arch/Resources/ui/preferences-ifc.ui index ab7f177d0..951b273da 100644 --- a/src/Mod/Arch/Resources/ui/preferences-ifc.ui +++ b/src/Mod/Arch/Resources/ui/preferences-ifc.ui @@ -7,7 +7,7 @@ 0 0 456 - 478 + 486 @@ -255,6 +255,26 @@ + + + + + + Create clones when objects have shared geometry + + + true + + + ifcCreateClones + + + Mod/Arch + + + + + diff --git a/src/Mod/Arch/importIFC.py b/src/Mod/Arch/importIFC.py index d7c1be6b3..99f73605b 100644 --- a/src/Mod/Arch/importIFC.py +++ b/src/Mod/Arch/importIFC.py @@ -304,6 +304,7 @@ def insert(filename,docname,skip=[],only=[],root=None): GET_EXTRUSIONS = False if not SEPARATE_OPENINGS: SKIP.append("IfcOpeningElement") + CREATE_CLONES = p.GetBool("ifcCreateClones",True) try: import ifcopenshell @@ -451,7 +452,7 @@ def insert(filename,docname,skip=[],only=[],root=None): prepr = product.Representation except: if DEBUG: print " ERROR unable to get object representation", - if prepr and (MERGE_MODE_ARCH == 0) and archobj: + if prepr and (MERGE_MODE_ARCH == 0) and archobj and CREATE_CLONES: for s in prepr.Representations: if s.RepresentationIdentifier.upper() == "BODY": if s.Items[0].is_a("IfcMappedItem"):