From b55a7688cc28976756b058f41f3e515167264517 Mon Sep 17 00:00:00 2001 From: Bernd Hahnebach Date: Thu, 16 Feb 2017 07:54:37 +0100 Subject: [PATCH] FEM: result object refactor, fix frd, vtk, z88 result file import --- src/Mod/Fem/App/FemVTKTools.cpp | 2 +- src/Mod/Fem/ccxFrdReader.py | 4 +++- src/Mod/Fem/importVTKResults.py | 4 +++- src/Mod/Fem/importZ88Results.py | 38 +++++++++++++++++++-------------- 4 files changed, 29 insertions(+), 19 deletions(-) diff --git a/src/Mod/Fem/App/FemVTKTools.cpp b/src/Mod/Fem/App/FemVTKTools.cpp index d1c413fb3..0fbf16784 100644 --- a/src/Mod/Fem/App/FemVTKTools.cpp +++ b/src/Mod/Fem/App/FemVTKTools.cpp @@ -529,7 +529,7 @@ App::DocumentObject* FemVTKTools::readResult(const char* filename, App::Document else { Base::Console().Log("FemResultObject pointer is NULL, trying to get the active object\n"); - if(obj->getTypeId() == Base::Type::fromName("Fem::FemResultObject")) + if(obj->getTypeId() == Base::Type::fromName("Fem::FemResultObjectPython")) result = obj; else { diff --git a/src/Mod/Fem/ccxFrdReader.py b/src/Mod/Fem/ccxFrdReader.py index c300fc248..a7c6a88cc 100644 --- a/src/Mod/Fem/ccxFrdReader.py +++ b/src/Mod/Fem/ccxFrdReader.py @@ -443,7 +443,9 @@ def importFrd(filename, analysis=None, result_name_prefix=None): results_name = result_name_prefix + 'time_' + str(step_time) + '_results' else: results_name = result_name_prefix + 'results' - results = FreeCAD.ActiveDocument.addObject('Fem::FemResultObject', results_name) + import FemResult + results = FemResult.makeFemResult(results_name) + #results = FreeCAD.ActiveDocument.addObject('Fem::FemResultObject', results_name) for m in analysis_object.Member: if m.isDerivedFrom("Fem::FemMeshObject"): results.Mesh = m diff --git a/src/Mod/Fem/importVTKResults.py b/src/Mod/Fem/importVTKResults.py index e099e9760..895d67cf8 100644 --- a/src/Mod/Fem/importVTKResults.py +++ b/src/Mod/Fem/importVTKResults.py @@ -67,7 +67,9 @@ def importVTK(filename, analysis=None, result_name_prefix=None): # 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) + from FemResult import makeFemResult + result_obj = makeFemResult(results_name) + # 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 diff --git a/src/Mod/Fem/importZ88Results.py b/src/Mod/Fem/importZ88Results.py index 592c20ab3..8ad251414 100644 --- a/src/Mod/Fem/importZ88Results.py +++ b/src/Mod/Fem/importZ88Results.py @@ -71,7 +71,9 @@ def import_z88_disp(filename, analysis=None, result_name_prefix=None): for result_set in m['Results']: results_name = result_name_prefix + 'results' - results = FreeCAD.ActiveDocument.addObject('Fem::FemResultObject', results_name) + import FemResult + results = FemResult.makeFemResult(results_name) + #results = FreeCAD.ActiveDocument.addObject('Fem::FemResultObject', results_name) for m in analysis_object.Member: if m.isDerivedFrom("Fem::FemMeshObject"): results.Mesh = m @@ -93,21 +95,25 @@ def import_z88_disp(filename, analysis=None, result_name_prefix=None): sum_list = map(sum, zip(*displacement)) x_avg, y_avg, z_avg = [i / no_of_values for i in sum_list] - s_max = max(results.StressValues) - s_min = min(results.StressValues) - s_avg = sum(results.StressValues) / no_of_values - p1_min = min(results.PrincipalMax) - p1_avg = sum(results.PrincipalMax) / no_of_values - p1_max = max(results.PrincipalMax) - p2_min = min(results.PrincipalMed) - p2_avg = sum(results.PrincipalMed) / no_of_values - p2_max = max(results.PrincipalMed) - p3_min = min(results.PrincipalMin) - p3_avg = sum(results.PrincipalMin) / no_of_values - p3_max = max(results.PrincipalMin) - ms_min = min(results.MaxShear) - ms_avg = sum(results.MaxShear) / no_of_values - ms_max = max(results.MaxShear) + # set stats of not imported values to 0 + s_max = s_min = s_avg = 0 + p1_min = p1_avg = p1_max = p2_min = p2_avg = p2_max = p3_min = p3_avg = p3_max = 0 + ms_min = ms_avg = ms_max = 0 + # s_max = max(results.StressValues) + # s_min = min(results.StressValues) + # s_avg = sum(results.StressValues) / no_of_values + # p1_min = min(results.PrincipalMax) + # p1_avg = sum(results.PrincipalMax) / no_of_values + # p1_max = max(results.PrincipalMax) + # p2_min = min(results.PrincipalMed) + # p2_avg = sum(results.PrincipalMed) / no_of_values + # p2_max = max(results.PrincipalMed) + # p3_min = min(results.PrincipalMin) + # p3_avg = sum(results.PrincipalMin) / no_of_values + # p3_max = max(results.PrincipalMin) + # ms_min = min(results.MaxShear) + # ms_avg = sum(results.MaxShear) / no_of_values + # ms_max = max(results.MaxShear) disp_abs = [] for d in displacement: