From d52e040fceeb0132f9e1c6d898ad424d39cef5ae Mon Sep 17 00:00:00 2001 From: UR-0 Date: Tue, 4 Feb 2020 15:57:36 +0100 Subject: [PATCH] ViewProviderFemResultMechanical Slider Displacement with finer scale to support large scale deformations with needed magnification less than 1.0 supprt magnification from 0.1 to 1000000.0 --- src/Mod/Fem/Gui/Resources/ui/ResultShow.ui | 73 ++++++------------- .../_ViewProviderFemResultMechanical.py | 50 ++++++++----- 2 files changed, 52 insertions(+), 71 deletions(-) diff --git a/src/Mod/Fem/Gui/Resources/ui/ResultShow.ui b/src/Mod/Fem/Gui/Resources/ui/ResultShow.ui index dae31359b5..60b42077ad 100644 --- a/src/Mod/Fem/Gui/Resources/ui/ResultShow.ui +++ b/src/Mod/Fem/Gui/Resources/ui/ResultShow.ui @@ -207,6 +207,9 @@ 0 + + 100 + Qt::Horizontal @@ -227,22 +230,22 @@ - + - false + true + + + Qt::ImhFormattedNumbersOnly false - - 1000000 - - - 10 - - + 1 + + 1000000.000000000000000 + @@ -260,21 +263,21 @@ - + - false + true + + + Qt::ImhFormattedNumbersOnly false + + 1 + - 1000000 - - - 10 - - - 100 + 1000000.000000000000000 @@ -304,7 +307,7 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'DejaVu Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">P1-P3 # Stress intensity stress equation. Available values are numpy array format. Calculation np.function can be used on available values. </span></p></body></html> @@ -437,22 +440,6 @@ p, li { white-space: pre-wrap; } - - cb_show_displacement - toggled(bool) - sb_displacement_factor - setEnabled(bool) - - - 112 - 240 - - - 124 - 269 - - - cb_show_displacement toggled(bool) @@ -469,22 +456,6 @@ p, li { white-space: pre-wrap; } - - cb_show_displacement - toggled(bool) - sb_displacement_factor_max - setEnabled(bool) - - - 161 - 237 - - - 159 - 302 - - - cb_show_displacement toggled(bool) diff --git a/src/Mod/Fem/femguiobjects/_ViewProviderFemResultMechanical.py b/src/Mod/Fem/femguiobjects/_ViewProviderFemResultMechanical.py index 63ee255ece..26dd955374 100644 --- a/src/Mod/Fem/femguiobjects/_ViewProviderFemResultMechanical.py +++ b/src/Mod/Fem/femguiobjects/_ViewProviderFemResultMechanical.py @@ -217,16 +217,18 @@ class _TaskPanelFemResultShow: QtCore.SIGNAL("valueChanged(int)"), self.hsb_disp_factor_changed ) - QtCore.QObject.connect( - self.form.sb_displacement_factor, - QtCore.SIGNAL("valueChanged(int)"), - self.sb_disp_factor_changed - ) - QtCore.QObject.connect( - self.form.sb_displacement_factor_max, - QtCore.SIGNAL("valueChanged(int)"), - self.sb_disp_factor_max_changed - ) +# QtCore.QObject.connect( +# self.form.sb_displacement_factor, +# QtCore.SIGNAL("valueChanged(int)"), +# self.sb_disp_factor_changed +# ) + self.form.sb_displacement_factor.valueChanged.connect(self.sb_disp_factor_changed) +# QtCore.QObject.connect( +# self.form.sb_displacement_factor_max, +# QtCore.SIGNAL("valueChanged(int)"), +# self.sb_disp_factor_max_changed +# ) + self.form.sb_displacement_factor_max.valueChanged.connect(self.sb_disp_factor_max_changed) # user defined equation QtCore.QObject.connect( @@ -247,11 +249,9 @@ class _TaskPanelFemResultShow: self.restore_initial_result_dialog() # initialize scale factor for show displacement scale_factor = get_displacement_scale_factor(self.result_obj) + self.form.sb_displacement_factor_max.setValue(10. * scale_factor) self.form.sb_displacement_factor.setValue(scale_factor) - self.form.hsb_displacement_factor.setValue(scale_factor) - diggits_scale_factor = len(str(abs(int(scale_factor)))) - new_max_factor = 10 ** diggits_scale_factor - self.form.sb_displacement_factor_max.setValue(new_max_factor) + def restore_result_dialog(self): try: @@ -302,8 +302,8 @@ class _TaskPanelFemResultShow: df = FreeCAD.FEM_dialog["disp_factor"] dfm = FreeCAD.FEM_dialog["disp_factor_max"] - self.form.hsb_displacement_factor.setMaximum(dfm) - self.form.hsb_displacement_factor.setValue(df) + #self.form.hsb_displacement_factor.setMaximum(dfm) + #self.form.hsb_displacement_factor.setValue(df) self.form.sb_displacement_factor_max.setValue(dfm) self.form.sb_displacement_factor.setValue(df) except: @@ -545,7 +545,7 @@ class _TaskPanelFemResultShow: def update_displacement(self, factor=None): if factor is None: if FreeCAD.FEM_dialog["show_disp"]: - factor = self.form.hsb_displacement_factor.value() + factor = self.form.sb_displacement_factor.value() else: factor = 0.0 self.mesh_obj.ViewObject.applyDisplacement(factor) @@ -566,16 +566,26 @@ class _TaskPanelFemResultShow: QtGui.QApplication.restoreOverrideCursor() def hsb_disp_factor_changed(self, value): - self.form.sb_displacement_factor.setValue(value) + self.form.sb_displacement_factor.setValue(value / 100. * self.form.sb_displacement_factor_max.value()) self.update_displacement() def sb_disp_factor_max_changed(self, value): FreeCAD.FEM_dialog["disp_factor_max"] = value - self.form.hsb_displacement_factor.setMaximum(value) + if value < self.form.sb_displacement_factor.value(): + self.form.sb_displacement_factor.setValue(value) + if value == 0.: + self.form.hsb_displacement_factor.setValue(0) + else: + self.form.hsb_displacement_factor.setValue(self.form.sb_displacement_factor.value() / value * 100.) def sb_disp_factor_changed(self, value): FreeCAD.FEM_dialog["disp_factor"] = value - self.form.hsb_displacement_factor.setValue(value) + if value > self.form.sb_displacement_factor_max.value(): + self.form.sb_displacement_factor.setValue(self.form.sb_displacement_factor_max.value()) + if self.form.sb_displacement_factor_max.value() == 0.: + self.form.hsb_displacement_factor.setValue(0.) + else: + self.form.hsb_displacement_factor.setValue(value / self.form.sb_displacement_factor_max.value() * 100.) def disable_empty_result_buttons(self): """ disable radio buttons if result does not exists in result object"""