FEM: result object refactor, fix frd, vtk, z88 result file import

This commit is contained in:
Bernd Hahnebach 2017-02-16 07:54:37 +01:00
parent c13ca92792
commit b55a7688cc
4 changed files with 29 additions and 19 deletions

View File

@ -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
{

View File

@ -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

View File

@ -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

View File

@ -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: