FEM: nonlinear materials, set CalculiX solver to nonlinear analysis if nonlinear material is added

This commit is contained in:
Bernd Hahnebach
2016-09-25 19:37:05 +01:00
committed by Yorik van Havre
parent 35c69f71dc
commit 491b2a95f0
2 changed files with 24 additions and 2 deletions

View File

@@ -30,6 +30,7 @@ from FemCommands import FemCommands
if FreeCAD.GuiUp:
import FreeCADGui
import FemGui
from PySide import QtCore
@@ -44,10 +45,18 @@ class _CommandSolverCalculix(FemCommands):
self.is_active = 'with_analysis'
def Activated(self):
has_nonlinear_material_obj = False
for m in FemGui.getActiveAnalysis().Member:
if hasattr(m, "Proxy") and m.Proxy.Type == "FemMaterialMechanicalNonlinear":
has_nonlinear_material_obj = True
FreeCAD.ActiveDocument.openTransaction("Create SolverCalculix")
FreeCADGui.addModule("FemSolverCalculix")
FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [FemSolverCalculix.makeFemSolverCalculix()]")
if has_nonlinear_material_obj:
FreeCADGui.doCommand("solver = FemSolverCalculix.makeFemSolverCalculix()")
FreeCADGui.doCommand("solver.MaterialNonlinearity = 'nonlinear'")
FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [solver]")
else:
FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [FemSolverCalculix.makeFemSolverCalculix()]")
if FreeCAD.GuiUp:
FreeCADGui.addCommand('Fem_SolverCalculix', _CommandSolverCalculix())