From 4f0f3aa4fa0baeed48832461a23f4a1dee3f7b2c Mon Sep 17 00:00:00 2001 From: Bernd Hahnebach Date: Mon, 20 Feb 2017 17:54:01 +0100 Subject: [PATCH] FEM: solver calculix object, move make def into make objects FEM module --- src/Mod/Fem/App/CMakeLists.txt | 1 - src/Mod/Fem/CMakeLists.txt | 1 - src/Mod/Fem/FemSolverCalculix.py | 43 --------------------------- src/Mod/Fem/ObjectsFem.py | 12 ++++++++ src/Mod/Fem/TestFem.py | 5 ++-- src/Mod/Fem/_CommandAnalysis.py | 3 +- src/Mod/Fem/_CommandSolverCalculix.py | 6 ++-- 7 files changed, 18 insertions(+), 53 deletions(-) delete mode 100644 src/Mod/Fem/FemSolverCalculix.py diff --git a/src/Mod/Fem/App/CMakeLists.txt b/src/Mod/Fem/App/CMakeLists.txt index 5c86e29c9..3cf0de1fa 100644 --- a/src/Mod/Fem/App/CMakeLists.txt +++ b/src/Mod/Fem/App/CMakeLists.txt @@ -133,7 +133,6 @@ SET(FemScripts_SRCS FemMeshGroup.py FemMeshRegion.py FemMeshTools.py - FemSolverCalculix.py FemSolverZ88.py FemTools.py FemToolsCcx.py diff --git a/src/Mod/Fem/CMakeLists.txt b/src/Mod/Fem/CMakeLists.txt index d99658b04..4359fd695 100755 --- a/src/Mod/Fem/CMakeLists.txt +++ b/src/Mod/Fem/CMakeLists.txt @@ -108,7 +108,6 @@ INSTALL( importCcxFrdResults.py FemInputWriterCcx.py FemToolsCcx.py - FemSolverCalculix.py _FemSolverCalculix.py _ViewProviderFemSolverCalculix.py _CommandSolverCalculix.py diff --git a/src/Mod/Fem/FemSolverCalculix.py b/src/Mod/Fem/FemSolverCalculix.py deleted file mode 100644 index c4c70f013..000000000 --- a/src/Mod/Fem/FemSolverCalculix.py +++ /dev/null @@ -1,43 +0,0 @@ -# *************************************************************************** -# * * -# * Copyright (c) 2015 - Bernd Hahnebach * -# * * -# * This program is free software; you can redistribute it and/or modify * -# * it under the terms of the GNU Lesser General Public License (LGPL) * -# * as published by the Free Software Foundation; either version 2 of * -# * the License, or (at your option) any later version. * -# * for detail see the LICENCE text file. * -# * * -# * This program is distributed in the hope that it will be useful, * -# * but WITHOUT ANY WARRANTY; without even the implied warranty of * -# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -# * GNU Library General Public License for more details. * -# * * -# * You should have received a copy of the GNU Library General Public * -# * License along with this program; if not, write to the Free Software * -# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * -# * USA * -# * * -# *************************************************************************** - -__title__ = "FemSolverCalculix" -__author__ = "Bernd Hahnebach" -__url__ = "http://www.freecadweb.org" - -## \addtogroup FEM -# @{ - -import FreeCAD -import _FemSolverCalculix - - -def makeFemSolverCalculix(name="CalculiX"): - '''makeSolverCalculix(name): makes a Calculix solver object''' - obj = FreeCAD.ActiveDocument.addObject("Fem::FemSolverObjectPython", name) - _FemSolverCalculix._FemSolverCalculix(obj) - if FreeCAD.GuiUp: - import _ViewProviderFemSolverCalculix - _ViewProviderFemSolverCalculix._ViewProviderFemSolverCalculix(obj.ViewObject) - return obj - -# @} diff --git a/src/Mod/Fem/ObjectsFem.py b/src/Mod/Fem/ObjectsFem.py index 4bd4ba5ca..99f3174ae 100644 --- a/src/Mod/Fem/ObjectsFem.py +++ b/src/Mod/Fem/ObjectsFem.py @@ -37,6 +37,18 @@ def makeAnalysis(name): return obj +########## solvers ########## +def makeSolverCalculix(name="CalculiX"): + '''makeSolverCalculix(name): makes a Calculix solver object''' + obj = FreeCAD.ActiveDocument.addObject("Fem::FemSolverObjectPython", name) + import _FemSolverCalculix + _FemSolverCalculix._FemSolverCalculix(obj) + if FreeCAD.GuiUp: + import _ViewProviderFemSolverCalculix + _ViewProviderFemSolverCalculix._ViewProviderFemSolverCalculix(obj.ViewObject) + return obj + + ########## element geometry definitions ########## def makeBeamSection(sectiontype='Rectangular', width=10.0, height=25.0, name="BeamSection"): '''makeBeamSection([width], [height], [name]): creates an beamsection object to define a cross section''' diff --git a/src/Mod/Fem/TestFem.py b/src/Mod/Fem/TestFem.py index 8ca2efe2d..4e58ff8f6 100644 --- a/src/Mod/Fem/TestFem.py +++ b/src/Mod/Fem/TestFem.py @@ -28,7 +28,6 @@ import Fem import FemToolsCcx import FreeCAD import ObjectsFem -import FemSolverCalculix import FemMaterial import csv import tempfile @@ -86,7 +85,7 @@ class FemTest(unittest.TestCase): self.active_doc.recompute() def create_new_solver(self): - self.solver_object = FemSolverCalculix.makeFemSolverCalculix('CalculiX') + self.solver_object = ObjectsFem.makeSolverCalculix('CalculiX') self.solver_object.GeometricalNonlinearity = 'linear' self.solver_object.ThermoMechSteadyState = False self.solver_object.MatrixSolverType = 'default' @@ -308,7 +307,7 @@ class TherMechFemTest(unittest.TestCase): self.active_doc.recompute() def create_new_solver(self): - self.solver_object = FemSolverCalculix.makeFemSolverCalculix('CalculiX') + self.solver_object = ObjectsFem.makeSolverCalculix('CalculiX') self.solver_object.AnalysisType = 'thermomech' self.solver_object.GeometricalNonlinearity = 'linear' self.solver_object.ThermoMechSteadyState = True diff --git a/src/Mod/Fem/_CommandAnalysis.py b/src/Mod/Fem/_CommandAnalysis.py index f33cc6f93..dd72e6696 100644 --- a/src/Mod/Fem/_CommandAnalysis.py +++ b/src/Mod/Fem/_CommandAnalysis.py @@ -47,10 +47,9 @@ class _CommandAnalysis(FemCommands): FreeCAD.ActiveDocument.openTransaction("Create Analysis") FreeCADGui.addModule("FemGui") FreeCADGui.addModule("ObjectsFem") - FreeCADGui.addModule("FemSolverCalculix") FreeCADGui.doCommand("ObjectsFem.makeAnalysis('Analysis')") FreeCADGui.doCommand("FemGui.setActiveAnalysis(App.activeDocument().ActiveObject)") - FreeCADGui.doCommand("FemSolverCalculix.makeFemSolverCalculix('CalculiX')") + FreeCADGui.doCommand("ObjectsFem.makeSolverCalculix('CalculiX')") FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [App.activeDocument().ActiveObject]") sel = FreeCADGui.Selection.getSelection() if (len(sel) == 1): diff --git a/src/Mod/Fem/_CommandSolverCalculix.py b/src/Mod/Fem/_CommandSolverCalculix.py index 1a4a0ac9d..623a036b8 100644 --- a/src/Mod/Fem/_CommandSolverCalculix.py +++ b/src/Mod/Fem/_CommandSolverCalculix.py @@ -50,13 +50,13 @@ class _CommandSolverCalculix(FemCommands): if hasattr(m, "Proxy") and m.Proxy.Type == "FemMaterialMechanicalNonlinear": has_nonlinear_material_obj = True FreeCAD.ActiveDocument.openTransaction("Create SolverCalculix") - FreeCADGui.addModule("FemSolverCalculix") + FreeCADGui.addModule("ObjectsFem") if has_nonlinear_material_obj: - FreeCADGui.doCommand("solver = FemSolverCalculix.makeFemSolverCalculix()") + FreeCADGui.doCommand("solver = ObjectsFem.makeSolverCalculix()") 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()]") + FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [ObjectsFem.makeSolverCalculix()]") FreeCADGui.addCommand('Fem_SolverCalculix', _CommandSolverCalculix())