diff --git a/src/Mod/Fem/App/CMakeLists.txt b/src/Mod/Fem/App/CMakeLists.txt index 3420595e74..afb32492c9 100755 --- a/src/Mod/Fem/App/CMakeLists.txt +++ b/src/Mod/Fem/App/CMakeLists.txt @@ -68,6 +68,9 @@ SET(FemScripts_SRCS _CommandBeamSection.py _CommandControlSolver.py _CommandConstraintSelfWeight.py + _CommandFEMMesh2Mesh.py + _CommandMechanicalMaterial.py + _CommandShowResult.py _CommandMaterialMechanicalNonlinear.py _CommandMechanicalMaterial.py _CommandMeshGmshFromShape.py diff --git a/src/Mod/Fem/CMakeLists.txt b/src/Mod/Fem/CMakeLists.txt index 1c2bd922a1..794b56e5e2 100755 --- a/src/Mod/Fem/CMakeLists.txt +++ b/src/Mod/Fem/CMakeLists.txt @@ -46,6 +46,7 @@ INSTALL( FemGmshTools.py FemMesh2Mesh.py + _CommandFEMMesh2Mesh.py FemBeamSection.py _FemBeamSection.py diff --git a/src/Mod/Fem/Gui/Workbench.cpp b/src/Mod/Fem/Gui/Workbench.cpp index 543289e9bd..6aa97fb78f 100755 --- a/src/Mod/Fem/Gui/Workbench.cpp +++ b/src/Mod/Fem/Gui/Workbench.cpp @@ -55,7 +55,8 @@ Gui::ToolBarItem* Workbench::setupToolBars() const Gui::ToolBarItem* root = StdWorkbench::setupToolBars(); Gui::ToolBarItem* fem = new Gui::ToolBarItem(root); fem->setCommand("FEM"); - *fem << "Fem_Analysis" + *fem << "Fem_FemMesh2Mesh" + << "Fem_Analysis" << "Fem_SolverCalculix" // << "Fem_SolverZ88" << "Fem_MeshNetgenFromShape" @@ -116,7 +117,8 @@ Gui::MenuItem* Workbench::setupMenuBar() const Gui::MenuItem* fem = new Gui::MenuItem; root->insertItem(item, fem); fem->setCommand("&FEM"); - *fem << "Fem_Analysis" + *fem << "Fem_FemMesh2Mesh" + << "Fem_Analysis" << "Fem_SolverCalculix" << "Fem_SolverZ88" << "Fem_MeshNetgenFromShape" diff --git a/src/Mod/Fem/InitGui.py b/src/Mod/Fem/InitGui.py index 4aa64f99c8..d813bd4a4f 100644 --- a/src/Mod/Fem/InitGui.py +++ b/src/Mod/Fem/InitGui.py @@ -49,6 +49,7 @@ class FemWorkbench (Workbench): import _CommandRunSolver import _CommandPurgeResults import _CommandControlSolver + import _CommandFEMMesh2Mesh import _CommandMeshGmshFromShape import _CommandMeshNetgenFromShape import _CommandAnalysis diff --git a/src/Mod/Fem/_CommandFEMMesh2Mesh.py b/src/Mod/Fem/_CommandFEMMesh2Mesh.py new file mode 100644 index 0000000000..8fa827c1db --- /dev/null +++ b/src/Mod/Fem/_CommandFEMMesh2Mesh.py @@ -0,0 +1,80 @@ +# *************************************************************************** +# * * +# * Copyright (c) 2016 - 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__ = "Command FEMMesh to Mesh" +__author__ = "Bernd Hahnebach" +__url__ = "http://www.freecadweb.org" + +## @package CommandFemMesh2Mesh +# \ingroup FEM + +import FreeCAD +from FemCommands import FemCommands + +import FreeCADGui +from PySide import QtCore + + +class _CommandFemMesh2Mesh(FemCommands): + # the Fem_FemMesh2Mesh command definition + def __init__(self): + super(_CommandFemMesh2Mesh, self).__init__() + self.resources = {'Pixmap': 'fem-fem-mesh-from-shape', + 'MenuText': QtCore.QT_TRANSLATE_NOOP("Fem_FemMesh2Mesh", "FEM mesh to mesh"), + 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Fem_FemMesh2Mesh", "Convert the surface of a FEM mesh to a mesh")} + self.is_active = 'with_document' + + def Activated(self): + FreeCAD.ActiveDocument.openTransaction("Create FEM mesh") + FreeCADGui.addModule("FemGui") + sel = FreeCADGui.Selection.getSelection() + if (len(sel) == 1): + if(sel[0].isDerivedFrom("Fem::FemMeshObject")): + FreeCAD.ActiveDocument.openTransaction("Create Mesh from FEMMesh") + FreeCADGui.addModule("FemMesh2Mesh") + FreeCADGui.doCommand("out_mesh = FemMesh2Mesh.femmesh_2_mesh(App.ActiveDocument." + sel[0].Name + ".FemMesh)") + FreeCADGui.addModule("Mesh") + FreeCADGui.doCommand("Mesh.show(Mesh.Mesh(out_mesh))") + FreeCADGui.doCommand("App.ActiveDocument." + sel[0].Name + ".ViewObject.hide()") + if (len(sel) == 2): + femmesh = None + res = None + if(sel[0].isDerivedFrom("Fem::FemMeshObject")): + if(sel[1].isDerivedFrom("Fem::FemResultObject")): + femmesh = sel[0] + res = sel[1] + elif(sel[1].isDerivedFrom("Fem::FemMeshObject")): + if(sel[0].isDerivedFrom("Fem::FemResultObject")): + femmesh = sel[1] + res = sel[0] + if femmesh and res: + FreeCAD.ActiveDocument.openTransaction("Create Mesh from FEMMesh") + FreeCADGui.addModule("FemMesh2Mesh") + FreeCADGui.doCommand("out_mesh = FemMesh2Mesh.femmesh_2_mesh(App.ActiveDocument." + femmesh.Name + ".FemMesh, App.ActiveDocument." + res.Name + ")") + FreeCADGui.addModule("Mesh") + FreeCADGui.doCommand("Mesh.show(Mesh.Mesh(out_mesh))") + FreeCADGui.doCommand("App.ActiveDocument." + femmesh.Name + ".ViewObject.hide()") + + FreeCADGui.Selection.clearSelection() + + +FreeCADGui.addCommand('Fem_FemMesh2Mesh', _CommandFemMesh2Mesh())