From ea1829c9faa2ac3cb84dd6cb1d5a5ca105edf532 Mon Sep 17 00:00:00 2001 From: Bernd Hahnebach Date: Thu, 16 Feb 2017 07:54:26 +0100 Subject: [PATCH] FEM: vtk result file reading, activate import in python vtk import module --- src/Mod/Fem/Init.py | 2 +- src/Mod/Fem/importVTKResults.py | 33 ++++++++++++++++++++++++++++----- 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/src/Mod/Fem/Init.py b/src/Mod/Fem/Init.py index 0d775cbd1..9cd28c3c9 100644 --- a/src/Mod/Fem/Init.py +++ b/src/Mod/Fem/Init.py @@ -32,7 +32,7 @@ FreeCAD.addImportType("FEM formats (*.unv *.med *.dat *.bdf)", "Fem") if("BUILD_FEM_VTK" in FreeCAD.__cmake__): FreeCAD.addImportType("FEM CFD Unstructure Mesh (*.vtk *.vtu)", "Fem") FreeCAD.addExportType("FEM CFD Unstructure Mesh (*.vtk *.vtu)", "Fem") - # FreeCAD.addImportType("FEM results (*.vtk *.vtp *.vts *.vtr *.vtu *.vti)", "importVTKResults") # not implemented yet + FreeCAD.addImportType("FEM results (*.vtk *.vtu)", "importVTKResults") FreeCAD.addExportType("FEM CFD Result in VTK format (*.vtk *.vtu)", "importVTKResults") FreeCAD.addExportType("FEM formats (*.unv *.med *.dat *.inp)", "Fem") diff --git a/src/Mod/Fem/importVTKResults.py b/src/Mod/Fem/importVTKResults.py index 8193e5d6f..e099e9760 100644 --- a/src/Mod/Fem/importVTKResults.py +++ b/src/Mod/Fem/importVTKResults.py @@ -23,7 +23,7 @@ # ***************************************************************************/ __title__ = "FreeCAD Result import and export VTK file library" -__author__ = "Qingfeng Xia" +__author__ = "Qingfeng Xia, Bernd Hahnebach" __url__ = "http://www.freecadweb.org" ## @package importVTKResults @@ -31,6 +31,7 @@ __url__ = "http://www.freecadweb.org" import os import FreeCAD +import Fem if open.__module__ == '__builtin__': @@ -44,7 +45,7 @@ def insert(filename, docname): except NameError: doc = FreeCAD.newDocument(docname) FreeCAD.ActiveDocument = doc - importFemResult(filename) + importVTK(filename) def open(filename): @@ -53,8 +54,31 @@ def open(filename): insert(filename, docname) -def importFemResult(filename): - FreeCAD.Console.PrintError("FemResult import is not implemented, actually not necessary\n") +def importVTK(filename, analysis=None, result_name_prefix=None): + if result_name_prefix is None: + result_name_prefix = '' + if analysis is None: + analysis_name = os.path.splitext(os.path.basename(filename))[0] + import FemAnalysis + analysis_object = FemAnalysis.makeFemAnalysis('Analysis') + analysis_object.Label = analysis_name + else: + analysis_object = analysis + + # if properties can be added in FemVTKTools importCfdResult(), this file can be used for CFD workbench + results_name = result_name_prefix + 'results' + result_obj = FreeCAD.ActiveDocument.addObject('Fem::FemResultObject', results_name) + Fem.readResult(filename, result_obj.Name) # readResult always creates a new femmesh named ResultMesh + analysis_object.Member = analysis_object.Member + [result_obj] + # FIXME move the ResultMesh in the analysis + + filenamebase = '.'.join(filename.split('.')[:-1]) # pattern: filebase_timestamp.vtk + ts = filenamebase.split('_')[-1] + try: + time_step = float(ts) + except: + time_step = 0.0 + # Stats has been setup in C++ function FemVTKTools importCfdResult() def export(objectslist, filename): @@ -66,5 +90,4 @@ def export(objectslist, filename): if not obj.isDerivedFrom("Fem::FemResultObject"): FreeCAD.Console.PrintError("object selcted is not FemResultObject.\n") return - import Fem Fem.writeResult(filename, obj)