diff --git a/src/blenderbim/blenderbim/bim/module/csv/operator.py b/src/blenderbim/blenderbim/bim/module/csv/operator.py index 71dabc5b21..152c671f39 100644 --- a/src/blenderbim/blenderbim/bim/module/csv/operator.py +++ b/src/blenderbim/blenderbim/bim/module/csv/operator.py @@ -129,9 +129,8 @@ class ExportCsvAttributes(bpy.types.Operator): class ExportIfcCsv(bpy.types.Operator): bl_idname = "bim.export_ifccsv" bl_label = "Export IFC" - #filename_ext = ".csv" + filename_ext = ".csv" filepath: bpy.props.StringProperty(subtype="FILE_PATH") - def invoke(self, context, event): props = context.scene.CsvProperties @@ -149,8 +148,7 @@ class ExportIfcCsv(bpy.types.Operator): ifc_file = IfcStore.get_file() else: ifc_file = ifcopenshell.open(props.csv_ifc_file) - selector = ifcopenshell.util.selector.Selector() - results = selector.parse(ifc_file, props.ifc_selector) + results = ifcopenshell.util.selector.filter_elements(ifc_file, props.ifc_selector) 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 @@ -196,9 +194,12 @@ class EyedropIfcCsv(bpy.types.Operator): global_ids = [] self.file = IfcStore.get_file() for obj in context.selected_objects: - if hasattr(obj, "BIMObjectProperties") and obj.BIMObjectProperties.ifc_definition_id: - global_ids.append("#" + self.file.by_id(obj.BIMObjectProperties.ifc_definition_id).GlobalId) - context.scene.CsvProperties.ifc_selector = "|".join(global_ids) + element = tool.Ifc.get_entity(obj) + if element: + global_id = getattr(element, "GlobalId", None) + if global_id: + global_ids.append(global_id) + context.scene.CsvProperties.ifc_selector = ",".join(global_ids) return {"FINISHED"} diff --git a/src/ifccsv/ifccsv.py b/src/ifccsv/ifccsv.py index 6497fe3671..08a4e3da58 100755 --- a/src/ifccsv/ifccsv.py +++ b/src/ifccsv/ifccsv.py @@ -302,7 +302,7 @@ if __name__ == "__main__": parser.add_argument("-i", "--ifc", type=str, required=True, help="The IFC file") parser.add_argument("-s", "--spreadsheet", type=str, default="data.csv", help="The spreadsheet file") parser.add_argument("-f", "--format", type=str, default="csv", help="The format, chosen from csv, ods, or xlsx") - parser.add_argument("-q", "--query", type=str, default="", help='Specify a IFC query selector, such as ".IfcWall"') + parser.add_argument("-q", "--query", type=str, default="", help='Specify a IFC query selector, such as "IfcWall"') parser.add_argument( "-a", "--arguments", @@ -315,7 +315,7 @@ if __name__ == "__main__": if args.export: ifc_file = ifcopenshell.open(args.ifc) - results = ifcopenshell.util.selector.Selector.parse(ifc_file, args.query) + results = ifcopenshell.util.selector.filter_elements(ifc_file, args.query) ifc_csv = IfcCsv() ifc_csv.export(ifc_file, results, args.arguments or [], output=args.spreadsheet, format=args.format) elif getattr(args, "import"):