FEM: Add EigenmodeLowLimit property to analysis object

Signed-off-by: Przemo Firszt <przemo@firszt.eu>
This commit is contained in:
Przemo Firszt 2015-10-20 16:58:07 +01:00 committed by wmayer
parent fcf19ff8ec
commit 042ded01e0
2 changed files with 17 additions and 3 deletions

View File

@ -275,9 +275,9 @@ class FemTools(QtCore.QRunnable, QtCore.QObject):
## Sets eigenmode parameters for CalculiX frequency analysis
# @param self The python object self
# @param number number of eigenmodes that wll be calculated, default read for FEM prefs or 10 if not set in the FEM prefs
# @param limit_low lower value of requested eigenfrequency range, default 0.0
# @param limit_low lower value of requested eigenfrequency range, default read for FEM prefs or 0.0 if not set in the FEM prefs
# @param limit_high higher value of requested eigenfrequency range, default 1000000.0
def set_eigenmode_parameters(self, number=None, limit_low=0.0, limit_high=1000000.0):
def set_eigenmode_parameters(self, number=None, limit_low=None, limit_high=1000000.0):
self.fem_prefs = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Fem")
if number is not None:
_number = number
@ -290,7 +290,16 @@ class FemTools(QtCore.QRunnable, QtCore.QObject):
if _number < 1:
_number = 1
self.eigenmode_parameters = (_number, limit_low, limit_high)
if limit_low is not None:
_limit_low = limit_low
else:
try:
_limit_low = self.analysis.EigenmodeLowLimit
except:
#Not yet in prefs, so it will always default to 0.0
_limit_low = self.fem_prefs.GetString("EigenmodeLowLimit", 0.0)
self.eigenmode_parameters = (_number, _limit_low, limit_high)
## Sets base_name
# @param self The python object self

View File

@ -46,6 +46,11 @@ class _FemAnalysis:
noe = fem_prefs.GetInt("NumberOfEigenmodes", 10)
obj.NumberOfEigenmodes = (noe, 1, 100, 1)
obj.addProperty("App::PropertyFloatConstraint", "EigenmodeLowLimit", "Fem", "Low frequency limit for eigenmode calculations")
#Not yet in prefs, so it will always default to 0.0
ell = fem_prefs.GetFloat("EigenmodeLowLimit", 0.0)
obj.EigenmodeLowLimit = (ell, 0.0, 1000000.0, 10000.0)
def execute(self, obj):
return