FEM: result task panel, fix if restore result is True but some results are missing

This commit is contained in:
Bernd Hahnebach
2019-09-14 22:53:47 +02:00
parent 46e66942b3
commit 49000b1bc5

View File

@@ -308,8 +308,12 @@ class _TaskPanelFemResultShow:
self.restore_initial_result_dialog()
def restore_initial_result_dialog(self):
FreeCAD.FEM_dialog = {"results_type": "None", "show_disp": False,
"disp_factor": 0, "disp_factor_max": 100}
FreeCAD.FEM_dialog = {
"results_type": "None",
"show_disp": False,
"disp_factor": 0,
"disp_factor_max": 100
}
self.reset_mesh_deformation()
self.reset_mesh_color()
@@ -324,50 +328,69 @@ class _TaskPanelFemResultShow:
self.set_result_stats("mm", 0.0, 0.0, 0.0)
self.reset_mesh_color()
# if an analysis has different result types and one has
# stress and the other not the restore result dialog
# could trigger stress selected for a result object
# which has not stress
# see https://forum.freecadweb.org/viewtopic.php?f=18&t=39162
# check if the results len is not 0 on any selected method
def abs_displacement_selected(self, state):
self.result_selected("Uabs", self.result_obj.DisplacementLengths, "mm")
if len(self.result_obj.DisplacementLengths) > 0:
self.result_selected("Uabs", self.result_obj.DisplacementLengths, "mm")
def x_displacement_selected(self, state):
res_disp_u1 = self.get_scalar_disp_list(
self.result_obj.DisplacementVectors, 0
)
self.result_selected("U1", res_disp_u1, "mm")
if len(self.result_obj.DisplacementVectors) > 0:
res_disp_u1 = self.get_scalar_disp_list(
self.result_obj.DisplacementVectors, 0
)
self.result_selected("U1", res_disp_u1, "mm")
def y_displacement_selected(self, state):
res_disp_u2 = self.get_scalar_disp_list(
self.result_obj.DisplacementVectors, 1
)
self.result_selected("U2", res_disp_u2, "mm")
if len(self.result_obj.DisplacementVectors) > 0:
res_disp_u2 = self.get_scalar_disp_list(
self.result_obj.DisplacementVectors, 1
)
self.result_selected("U2", res_disp_u2, "mm")
def z_displacement_selected(self, state):
res_disp_u3 = self.get_scalar_disp_list(
self.result_obj.DisplacementVectors, 2
)
self.result_selected("U3", res_disp_u3, "mm")
if len(self.result_obj.DisplacementVectors) > 0:
res_disp_u3 = self.get_scalar_disp_list(
self.result_obj.DisplacementVectors, 2
)
self.result_selected("U3", res_disp_u3, "mm")
def vm_stress_selected(self, state):
self.result_selected("Sabs", self.result_obj.StressValues, "MPa")
if len(self.result_obj.StressValues) > 0:
self.result_selected("Sabs", self.result_obj.StressValues, "MPa")
def max_shear_selected(self, state):
self.result_selected("MaxShear", self.result_obj.MaxShear, "MPa")
if len(self.result_obj.MaxShear) > 0:
self.result_selected("MaxShear", self.result_obj.MaxShear, "MPa")
def max_prin_selected(self, state):
self.result_selected("MaxPrin", self.result_obj.PrincipalMax, "MPa")
if len(self.result_obj.PrincipalMax) > 0:
self.result_selected("MaxPrin", self.result_obj.PrincipalMax, "MPa")
def temperature_selected(self, state):
self.result_selected("Temp", self.result_obj.Temperature, "K")
if len(self.result_obj.Temperature) > 0:
self.result_selected("Temp", self.result_obj.Temperature, "K")
def massflowrate_selected(self, state):
self.result_selected("MFlow", self.result_obj.MassFlowRate, "kg/s")
if len(self.result_obj.MassFlowRate) > 0:
self.result_selected("MFlow", self.result_obj.MassFlowRate, "kg/s")
def networkpressure_selected(self, state):
self.result_selected("NPress", self.result_obj.NetworkPressure, "MPa")
if len(self.result_obj.NetworkPressure) > 0:
self.result_selected("NPress", self.result_obj.NetworkPressure, "MPa")
def min_prin_selected(self, state):
self.result_selected("MinPrin", self.result_obj.PrincipalMin, "MPa")
if len(self.result_obj.PrincipalMin) > 0:
self.result_selected("MinPrin", self.result_obj.PrincipalMin, "MPa")
def peeq_selected(self, state):
self.result_selected("Peeq", self.result_obj.Peeq, "")
if len(self.result_obj.Peeq) > 0:
self.result_selected("Peeq", self.result_obj.Peeq, "")
def user_defined_text(self, equation):
FreeCAD.FEM_dialog["results_type"] = "user"