diff --git a/src/blenderbim/blenderbim/bim/module/csv/operator.py b/src/blenderbim/blenderbim/bim/module/csv/operator.py index ee8de3647d..c2343220bc 100644 --- a/src/blenderbim/blenderbim/bim/module/csv/operator.py +++ b/src/blenderbim/blenderbim/bim/module/csv/operator.py @@ -24,6 +24,7 @@ import logging import tempfile import ifcopenshell import blenderbim.tool as tool +import blenderbim.bim.module.drawing.scheduler as scheduler from blenderbim.bim.ifc import IfcStore from blenderbim.bim.handler import refresh_ui_data @@ -92,15 +93,26 @@ class ImportCsvAttributes(bpy.types.Operator): data = json.load(open(self.filepath)) tool.Search.import_filter_query(data["query"], props.filter_groups) + for prop in [ + "should_generate_svg", + "should_preserve_existing", + "include_global_id", + "null_value", + "empty_value", + "true_value", + "false_value", + "concat_value", + "csv_delimiter", + "format", + "csv_custom_delimiter", + ]: + setattr(props, prop, data["settings"][prop]) + props.csv_attributes.clear() for attribute in data["attributes"]: new = props.csv_attributes.add() - new.name = attribute["name"] - new.header = attribute["header"] - new.sort = attribute["sort"] - new.group = attribute["group"] - new.summary = attribute["summary"] - new.formatting = attribute["formatting"] + for prop in ["name", "header", "sort", "group", "summary", "formatting"]: + setattr(new, prop, attribute[prop]) return {"FINISHED"} def invoke(self, context, event): @@ -120,6 +132,22 @@ class ExportCsvAttributes(bpy.types.Operator): def execute(self, context): props = context.scene.CsvProperties + settings = {} + for prop in [ + "should_generate_svg", + "should_preserve_existing", + "include_global_id", + "null_value", + "empty_value", + "true_value", + "false_value", + "concat_value", + "csv_delimiter", + "format", + "csv_custom_delimiter", + ]: + settings[prop] = getattr(props, prop) + data = { "query": tool.Search.export_filter_query(props.filter_groups), "attributes": [ @@ -133,6 +161,7 @@ class ExportCsvAttributes(bpy.types.Operator): } for a in props.csv_attributes ], + "settings": settings, } with open(self.filepath, "w") as outfile: @@ -213,6 +242,10 @@ class ExportIfcCsv(bpy.types.Operator): summaries=summaries, formatting=formatting, ) + + if props.format != "csv" and props.should_generate_svg: + schedule_creator = scheduler.Scheduler() + schedule_creator.schedule(self.filepath, tool.Drawing.get_path_with_ext(self.filepath, "svg")) return {"FINISHED"} diff --git a/src/blenderbim/blenderbim/bim/module/csv/prop.py b/src/blenderbim/blenderbim/bim/module/csv/prop.py index 6a80113015..e4904f6b06 100644 --- a/src/blenderbim/blenderbim/bim/module/csv/prop.py +++ b/src/blenderbim/blenderbim/bim/module/csv/prop.py @@ -65,6 +65,7 @@ class CsvProperties(PropertyGroup): ifc_selector: StringProperty(default="", name="IFC Selector") filter_groups: CollectionProperty(type=BIMFilterGroup, name="Filter Groups") csv_attributes: CollectionProperty(name="CSV Attributes", type=CsvAttribute) + should_generate_svg: BoolProperty(default=False, name="Generate SVG") should_preserve_existing: BoolProperty(default=False, name="Preserve Existing") include_global_id: BoolProperty(default=True, name="Include GlobalId") null_value: StringProperty(default="N/A", name="Null Value") diff --git a/src/blenderbim/blenderbim/bim/module/csv/ui.py b/src/blenderbim/blenderbim/bim/module/csv/ui.py index 5344e74ee7..9cc7958b6f 100644 --- a/src/blenderbim/blenderbim/bim/module/csv/ui.py +++ b/src/blenderbim/blenderbim/bim/module/csv/ui.py @@ -67,6 +67,8 @@ class BIM_PT_ifccsv(Panel): row = layout.row(align=True) row.prop(props, "csv_custom_delimiter") + row = layout.row() + row.prop(props, "should_generate_svg") row = layout.row() row.prop(props, "should_preserve_existing") row = layout.row()