FEM: Add new properties to FEM preferences

The new properties are NumberOfEigenmode, EigenmodeHighLimit and
EigenmodeLowLimit. All 3 are linked with analysis object properties.

Signed-off-by: Przemo Firszt <przemo@firszt.eu>
This commit is contained in:
Przemo Firszt 2015-10-20 18:21:08 +01:00 committed by wmayer
parent 6ab7a434ac
commit 3dcc189e8b
3 changed files with 157 additions and 55 deletions

View File

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>555</width>
<height>453</height>
<height>518</height>
</rect>
</property>
<property name="windowTitle">
@ -196,64 +196,152 @@
<item>
<widget class="QGroupBox" name="gb_analysis_params">
<property name="title">
<string>Default analysis type</string>
<string>Default analysis settings</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="1">
<widget class="Gui::PrefComboBox" name="cb_analysis_type">
<property name="minimumSize">
<size>
<width>148</width>
<height>0</height>
</size>
</property>
<property name="toolTip">
<string>Default type on analysis</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>AnalysisType</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Fem</cstring>
</property>
<item>
<widget class="Gui::PrefComboBox" name="cb_analysis_type">
<property name="minimumSize">
<size>
<width>148</width>
<height>0</height>
</size>
</property>
<property name="toolTip">
<string>Default type on analysis</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>AnalysisType</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Fem</cstring>
</property>
<item>
<property name="text">
<string>Static</string>
</property>
<property name="icon">
<iconset resource="Resources/Fem.qrc">
<normaloff>:/icons/fem-new-analysis.svg</normaloff>:/icons/fem-new-analysis.svg</iconset>
</property>
</item>
<item>
<property name="text">
<string>Frequency</string>
</property>
<property name="icon">
<iconset resource="Resources/Fem.qrc">
<normaloff>:/icons/fem-frequency-analysis.svg</normaloff>:/icons/fem-frequency-analysis.svg</iconset>
</property>
</item>
</widget>
<property name="text">
<string>Static</string>
</property>
<property name="icon">
<iconset resource="Resources/Fem.qrc">
<normaloff>:/icons/fem-new-analysis.svg</normaloff>:/icons/fem-new-analysis.svg</iconset>
</property>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
<property name="text">
<string>Frequency</string>
</property>
<property name="icon">
<iconset resource="Resources/Fem.qrc">
<normaloff>:/icons/fem-frequency-analysis.svg</normaloff>:/icons/fem-frequency-analysis.svg</iconset>
</property>
</item>
</layout>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="l_eigenmode_number">
<property name="text">
<string>Eigenmode number</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="l_type">
<property name="text">
<string>Type</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="Gui::PrefSpinBox" name="sb_eigenmode_number">
<property name="maximum">
<number>100</number>
</property>
<property name="value">
<number>10</number>
</property>
<property name="prefEntry" stdset="0">
<cstring>NumberOfEigenmode</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Fem</cstring>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="l_eigenmode_high_limit">
<property name="text">
<string>High frequency limit</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="Gui::PrefDoubleSpinBox" name="dsb_eigenmode_high_limit">
<property name="decimals">
<number>1</number>
</property>
<property name="maximum">
<double>1000000.000000000000000</double>
</property>
<property name="singleStep">
<double>10000.000000000000000</double>
</property>
<property name="value">
<double>1000000.000000000000000</double>
</property>
<property name="prefEntry" stdset="0">
<cstring>EigenmodeHighLimit</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Fem</cstring>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="l_eigenmode_low_limit">
<property name="text">
<string>Low frequency limit</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="Gui::PrefDoubleSpinBox" name="dsb_eigenmode_low_limit">
<property name="decimals">
<number>1</number>
</property>
<property name="minimum">
<double>0.000000000000000</double>
</property>
<property name="maximum">
<double>1000000.000000000000000</double>
</property>
<property name="singleStep">
<double>10000.000000000000000</double>
</property>
<property name="value">
<double>0.000000000000000</double>
</property>
<property name="prefEntry" stdset="0">
<cstring>EigenmodeLowLimit</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Fem</cstring>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QLabel" name="l_hz_1">
<property name="text">
<string>Hz</string>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QLabel" name="l_hz_2">
<property name="text">
<string>Hz</string>
</property>
</widget>
</item>
</layout>
</item>
@ -398,6 +486,11 @@
<extends>Gui::FileChooser</extends>
<header>Gui/PrefWidgets.h</header>
</customwidget>
<customwidget>
<class>Gui::PrefSpinBox</class>
<extends>QSpinBox</extends>
<header>Gui/PrefWidgets.h</header>
</customwidget>
<customwidget>
<class>Gui::PrefCheckBox</class>
<extends>QCheckBox</extends>
@ -408,6 +501,11 @@
<extends>QComboBox</extends>
<header>Gui/PrefWidgets.h</header>
</customwidget>
<customwidget>
<class>Gui::PrefDoubleSpinBox</class>
<extends>QDoubleSpinBox</extends>
<header>Gui/PrefWidgets.h</header>
</customwidget>
</customwidgets>
<resources>
<include location="Resources/Fem.qrc"/>

View File

@ -53,6 +53,9 @@ void DlgSettingsFemImp::saveSettings()
fc_ext_editor->onSave();
fc_ccx_binary->onSave();
cb_analysis_type->onSave();
sb_eigenmode_number->onSave();
dsb_eigenmode_high_limit->onSave();
dsb_eigenmode_low_limit->onSave();
cb_use_built_in_materials->onSave();
cb_use_mat_from_config_dir->onSave();
cb_use_mat_from_custom_dir->onSave();
@ -66,6 +69,9 @@ void DlgSettingsFemImp::loadSettings()
fc_ext_editor->onRestore();
fc_ccx_binary->onRestore();
cb_analysis_type->onRestore();
sb_eigenmode_number->onRestore();
dsb_eigenmode_high_limit->onRestore();
dsb_eigenmode_low_limit->onRestore();
cb_use_built_in_materials->onRestore();
cb_use_mat_from_config_dir->onRestore();
cb_use_mat_from_custom_dir->onRestore();

View File

@ -42,7 +42,6 @@ class _FemAnalysis:
obj.WorkingDir = fem_prefs.GetString("WorkingDir", "")
obj.addProperty("App::PropertyIntegerConstraint", "NumberOfEigenmodes", "Fem", "Number of modes for frequency calculations")
#Not yet in prefs, so it will always default to 10
noe = fem_prefs.GetInt("NumberOfEigenmodes", 10)
obj.NumberOfEigenmodes = (noe, 1, 100, 1)
@ -52,9 +51,8 @@ class _FemAnalysis:
obj.EigenmodeLowLimit = (ell, 0.0, 1000000.0, 10000.0)
obj.addProperty("App::PropertyFloatConstraint", "EigenmodeHighLimit", "Fem", "High frequency limit for eigenmode calculations")
#Not yet in prefs, so it will always default to 1000000.0
ehl = fem_prefs.GetFloat("EigenmodeHighLimit", 1000000.0)
obj.EigenmodeHighLimit = (ehl, 0.0, 1000000.0, 100000)
obj.EigenmodeHighLimit = (ehl, 0.0, 1000000.0, 10000.0)
def execute(self, obj):
return