diff --git a/src/Mod/Arch/Resources/ui/preferences-ifc.ui b/src/Mod/Arch/Resources/ui/preferences-ifc.ui index b2f5d39d14..0a53d3f459 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 463 - 775 + 802 @@ -342,6 +342,19 @@ + + + + Import full FreeCAD parametric definitions if available + + + IfcImportFreeCADProperties + + + Mod/Arch + + + diff --git a/src/Mod/Arch/importIFC.py b/src/Mod/Arch/importIFC.py index 508d1f51a2..a36012cf43 100644 --- a/src/Mod/Arch/importIFC.py +++ b/src/Mod/Arch/importIFC.py @@ -557,7 +557,7 @@ def insert(filename,docname,skip=[],only=[],root=None): # checking for full FreeCAD parametric definition, overriding everything else - if pid in properties.keys(): + if pid in properties.keys() and FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Arch").GetBool("IfcImportFreeCADProperties",False): if "FreeCADPropertySet" in [ifcfile[pset].Name for pset in properties[pid].keys()]: if DEBUG: print(" restoring from parametric definition...",end="") obj = createFromProperties(properties[pid],ifcfile) @@ -2014,7 +2014,9 @@ def export(exportList,filename): ifcfile.createIfcRelDefinesByProperties(ifcopenshell.guid.compress(uuid.uuid1().hex),history,None,None,[product],eltq) if FULL_PARAMETRIC: + # exporting all the object properties + FreeCADProps = [] FreeCADGuiProps = [] FreeCADProps.append(ifcbin.createIfcPropertySingleValue("FreeCADType","IfcText",obj.TypeId)) @@ -2502,6 +2504,10 @@ def createFromProperties(propsets,ifcfile): obj = FreeCAD.ActiveDocument.addObject(appset["FreeCADType"],appset["FreeCADName"]) if "FreeCADAppObject" in appset: mod,cla = appset["FreeCADAppObject"].split(".") + if "'" in mod: + mod = mod.split("'")[-1] + if "'" in cla: + cla = cla.split("'")[0] import importlib mod = importlib.import_module(mod) getattr(mod,cla)(obj) @@ -2510,6 +2516,10 @@ def createFromProperties(propsets,ifcfile): if guiset: if "FreeCADGuiObject" in guiset: mod,cla = guiset["FreeCADGuiObject"].split(".") + if "'" in mod: + mod = mod.split("'")[-1] + if "'" in cla: + cla = cla.split("'")[0] import importlib mod = importlib.import_module(mod) getattr(mod,cla)(obj.ViewObject)