From 6b7190d3f024ce38ffdd5ee35b07a037313e7095 Mon Sep 17 00:00:00 2001 From: Jonathan Wiedemann Date: Sat, 20 Feb 2016 13:25:26 +0100 Subject: [PATCH] Arch BIM IFC : Add IFC Properties spreadsheet container --- src/Mod/Arch/ArchCommands.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/Mod/Arch/ArchCommands.py b/src/Mod/Arch/ArchCommands.py index 3281189a3..487904333 100644 --- a/src/Mod/Arch/ArchCommands.py +++ b/src/Mod/Arch/ArchCommands.py @@ -1208,7 +1208,13 @@ class _CommandComponent: FreeCAD.ActiveDocument.commitTransaction() FreeCAD.ActiveDocument.recompute() -def makeIfcSpreadsheet(obj=None): +def makeIfcSpreadsheet(archobj=None): + ifc_container = None + for obj in FreeCAD.ActiveDocument.Objects : + if obj.Name == "IfcPropertiesContainer" : + ifc_container = obj + if not ifc_container : + ifc_container = FreeCAD.ActiveDocument.addObject('App::DocumentObjectGroup','IfcPropertiesContainer') import Spreadsheet ifc_spreadsheet = FreeCAD.ActiveDocument.addObject('Spreadsheet::Sheet','IfcProperties') ifc_spreadsheet.set('A1', translate("Arch","Category")) @@ -1216,14 +1222,15 @@ def makeIfcSpreadsheet(obj=None): ifc_spreadsheet.set('C1', translate("Arch","Type")) ifc_spreadsheet.set('D1', translate("Arch","Value")) ifc_spreadsheet.set('E1', translate("Arch","Unit")) - if obj : - if hasattr(obj,"IfcProperties"): - obj.IfcProperties = ifc_spreadsheet + ifc_container.addObject(ifc_spreadsheet) + if archobj : + if hasattr(obj,"IfcProperties") : + archobj.IfcProperties = ifc_spreadsheet return ifc_spreadsheet else : - FreeCAD.Console.PrintWarning(translate("Arch", "The object have not IfcProperties attribute. Cancel spreadsheet creation for object : ") + obj.Label) + FreeCAD.Console.PrintWarning(translate("Arch", "The object have not IfcProperties attribute. Cancel spreadsheet creation for object : ") + archobj.Label) FreeCAD.ActiveDocument.removeObject(ifc_spreadsheet) - else: + else : return ifc_spreadsheet class _CommandIfcSpreadsheet: