From 8a74e550d8856f3ce2d2a3b07d1c6adea1530f94 Mon Sep 17 00:00:00 2001 From: qingfengxia Date: Sat, 23 May 2020 00:03:14 +0200 Subject: [PATCH] FEM: material task panel, add method to update input field values --- .../Fem/femviewprovider/view_material_common.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/Mod/Fem/femviewprovider/view_material_common.py b/src/Mod/Fem/femviewprovider/view_material_common.py index 6b03d2d9ab..9c855c2c01 100644 --- a/src/Mod/Fem/femviewprovider/view_material_common.py +++ b/src/Mod/Fem/femviewprovider/view_material_common.py @@ -543,6 +543,22 @@ class _TaskPanel: self.material["SpecificHeat"] = "0 J/kg/K" FreeCAD.Console.PrintMessage("\n") + def update_material_property(self, input_field, matProperty, qUnit, variation=0.001): + # this update property works for all Gui::InputField widgets + value = Units.Quantity(input_field.text()).getValueAs(qUnit) + old_value = Units.Quantity(self.material[matProperty]).getValueAs(qUnit) + if value: + if not (1 - variation < float(old_value) / value < 1 + variation): + material = self.material + material[matProperty] = unicode(value) + " " + qUnit # unicode() is an alias to str for py3 + self.material = material + if self.has_transient_mat is False: + self.add_transient_material() + else: + self.set_transient_material() + else: + pass # some check or default value set can be done here + # mechanical input fields def ym_changed(self): # FreeCADs standard unit for stress is kPa