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"):