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
This commit is contained in:
@@ -207,6 +207,9 @@
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>100</number>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
@@ -227,22 +230,22 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QSpinBox" name="sb_displacement_factor">
|
||||
<widget class="QDoubleSpinBox" name="sb_displacement_factor">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="inputMethodHints">
|
||||
<set>Qt::ImhFormattedNumbersOnly</set>
|
||||
</property>
|
||||
<property name="readOnly">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>1000000</number>
|
||||
</property>
|
||||
<property name="singleStep">
|
||||
<number>10</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<property name="decimals">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<double>1000000.000000000000000</double>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
@@ -260,21 +263,21 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QSpinBox" name="sb_displacement_factor_max">
|
||||
<widget class="QDoubleSpinBox" name="sb_displacement_factor_max">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="inputMethodHints">
|
||||
<set>Qt::ImhFormattedNumbersOnly</set>
|
||||
</property>
|
||||
<property name="readOnly">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="decimals">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>1000000</number>
|
||||
</property>
|
||||
<property name="singleStep">
|
||||
<number>10</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>100</number>
|
||||
<double>1000000.000000000000000</double>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@@ -304,7 +307,7 @@
|
||||
<string><!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></string>
|
||||
</property>
|
||||
</widget>
|
||||
@@ -437,22 +440,6 @@ p, li { white-space: pre-wrap; }
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>cb_show_displacement</sender>
|
||||
<signal>toggled(bool)</signal>
|
||||
<receiver>sb_displacement_factor</receiver>
|
||||
<slot>setEnabled(bool)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>112</x>
|
||||
<y>240</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>124</x>
|
||||
<y>269</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>cb_show_displacement</sender>
|
||||
<signal>toggled(bool)</signal>
|
||||
@@ -469,22 +456,6 @@ p, li { white-space: pre-wrap; }
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>cb_show_displacement</sender>
|
||||
<signal>toggled(bool)</signal>
|
||||
<receiver>sb_displacement_factor_max</receiver>
|
||||
<slot>setEnabled(bool)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>161</x>
|
||||
<y>237</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>159</x>
|
||||
<y>302</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>cb_show_displacement</sender>
|
||||
<signal>toggled(bool)</signal>
|
||||
|
||||
@@ -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"""
|
||||
|
||||
Reference in New Issue
Block a user