From f507e3e8bdbee1ad5c3310adb19c8ffd2fd246e0 Mon Sep 17 00:00:00 2001 From: c4rlosdias Date: Mon, 3 Jul 2023 10:22:08 -0300 Subject: [PATCH] Add extra formats to output file --- .../blenderbim/bim/module/csv/operator.py | 12 +++++++----- src/blenderbim/blenderbim/bim/module/csv/prop.py | 9 +++++++++ src/blenderbim/blenderbim/bim/module/csv/ui.py | 14 +++++++++----- 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/module/csv/operator.py b/src/blenderbim/blenderbim/bim/module/csv/operator.py index 5b74ec3ec9..71dabc5b21 100644 --- a/src/blenderbim/blenderbim/bim/module/csv/operator.py +++ b/src/blenderbim/blenderbim/bim/module/csv/operator.py @@ -128,12 +128,14 @@ class ExportCsvAttributes(bpy.types.Operator): class ExportIfcCsv(bpy.types.Operator): bl_idname = "bim.export_ifccsv" - bl_label = "Export IFC to CSV" - filename_ext = ".csv" + bl_label = "Export IFC" + #filename_ext = ".csv" filepath: bpy.props.StringProperty(subtype="FILE_PATH") + def invoke(self, context, event): - self.filepath = bpy.path.ensure_ext(bpy.data.filepath, ".csv") + props = context.scene.CsvProperties + self.filepath = bpy.path.ensure_ext(bpy.data.filepath, f".{props.format}") WindowManager = context.window_manager WindowManager.fileselect_add(self) return {"RUNNING_MODAL"} @@ -142,7 +144,7 @@ class ExportIfcCsv(bpy.types.Operator): import ifccsv props = context.scene.CsvProperties - self.filepath = bpy.path.ensure_ext(self.filepath, ".csv") + self.filepath = bpy.path.ensure_ext(self.filepath, f".{props.format}") if props.should_load_from_memory: ifc_file = IfcStore.get_file() else: @@ -152,7 +154,7 @@ class ExportIfcCsv(bpy.types.Operator): ifc_csv = ifccsv.IfcCsv() attributes = [a.name for a in props.csv_attributes] sep = props.csv_custom_delimiter if props.csv_delimiter == "CUSTOM" else props.csv_delimiter - ifc_csv.export(ifc_file, results, attributes, output=self.filepath, format="csv", delimiter=sep) + ifc_csv.export(ifc_file, results, attributes, output=self.filepath, format=props.format, delimiter=sep) return {"FINISHED"} diff --git a/src/blenderbim/blenderbim/bim/module/csv/prop.py b/src/blenderbim/blenderbim/bim/module/csv/prop.py index bb04c1b500..4cdbe3ba7c 100644 --- a/src/blenderbim/blenderbim/bim/module/csv/prop.py +++ b/src/blenderbim/blenderbim/bim/module/csv/prop.py @@ -45,5 +45,14 @@ class CsvProperties(PropertyGroup): name="IFC CSV Delimiter", default=",", ) + format: EnumProperty( + items=[ + ("csv", "csv", ""), + ("xlsx", "xlsx", ""), + ("ods", "ods", ""), + ], + name="Output format", + default="csv", + ) csv_custom_delimiter: StringProperty(default="", name="Custom Delimiter") should_load_from_memory: BoolProperty(default=False, name="Load from Memory") diff --git a/src/blenderbim/blenderbim/bim/module/csv/ui.py b/src/blenderbim/blenderbim/bim/module/csv/ui.py index cdae4f8ab7..7c1df7a4d2 100644 --- a/src/blenderbim/blenderbim/bim/module/csv/ui.py +++ b/src/blenderbim/blenderbim/bim/module/csv/ui.py @@ -60,17 +60,21 @@ class BIM_PT_ifccsv(Panel): row = layout.row(align=True) row.prop(attribute, "name", text="") row.operator("bim.remove_csv_attribute", icon="X", text="").index = index - + row = layout.row(align=True) - row.prop(props, "csv_delimiter") + row.prop(props, "format") - if props.csv_delimiter == "CUSTOM": + if props.format == 'csv': row = layout.row(align=True) - row.prop(props, "csv_custom_delimiter") + row.prop(props, "csv_delimiter") + + if props.csv_delimiter == "CUSTOM": + row = layout.row(align=True) + row.prop(props, "csv_custom_delimiter") row = layout.row() split = row.split(factor=0.5) c = split.column() - c.operator("bim.export_ifccsv", icon="EXPORT") + c.operator("bim.export_ifccsv", icon="EXPORT", text="Export IFC to " + props.format.upper()) c = split.column() c.operator("bim.import_ifccsv", icon="IMPORT")