From 8bcb9ffa3ecfcac6a6eff25d4c3972abb95d0e73 Mon Sep 17 00:00:00 2001 From: Thomas Krijnen Date: Thu, 20 Oct 2011 16:05:21 +0000 Subject: [PATCH] - Now with actual logging to Blender texts - More detailed feedback on progress and pop-up when import fails --- .../io_import_scene_ifc/__init__.py | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/ifcblender/io_import_scene_ifc/__init__.py b/src/ifcblender/io_import_scene_ifc/__init__.py index ec7695edee..df34e08f95 100644 --- a/src/ifcblender/io_import_scene_ifc/__init__.py +++ b/src/ifcblender/io_import_scene_ifc/__init__.py @@ -61,8 +61,10 @@ bpy.types.Object.ifc_type = StringProperty(name="IFC Entity Type", def import_ifc(filename, use_names, process_relations): from . import IfcImport + print("Reading %s..."%bpy.path.basename(filename)) if not IfcImport.Init(filename): - return + return False + print("Done reading file") id_to_object = {} id_to_parent = {} id_to_matrix = {} @@ -126,6 +128,9 @@ def import_ifc(filename, use_names, process_relations): print("\rDone creating geometry" + " " * 30) id_to_parent_temp = dict(id_to_parent) + + if process_relations: + print("Processing relations...") while len(id_to_parent_temp) and process_relations: id, parent_id = id_to_parent_temp.popitem() @@ -171,8 +176,16 @@ def import_ifc(filename, use_names, process_relations): id_to_object[id].matrix_local = parent_matrix.inverted() * matrix else: id_to_object[id].matrix_world = matrix + + if process_relations: + print("Done processing relations") + + txt = bpy.data.texts.new("%s.log"%bpy.path.basename(filename)) + txt.from_string(IfcImport.GetLog()) IfcImport.CleanUp() + + return True class ImportIFC(bpy.types.Operator, ImportHelper): @@ -191,7 +204,10 @@ class ImportIFC(bpy.types.Operator, ImportHelper): default=True) def execute(self, context): - import_ifc(self.filepath, self.use_names, self.process_relations) + if not import_ifc(self.filepath, self.use_names, self.process_relations): + self.report('ERROR', + 'Unable to parse .ifc file or no geometrical entities found' + ) return {'FINISHED'}