diff --git a/src/Mod/Fem/App/CMakeLists.txt b/src/Mod/Fem/App/CMakeLists.txt index bf1cb25dc..448a96221 100755 --- a/src/Mod/Fem/App/CMakeLists.txt +++ b/src/Mod/Fem/App/CMakeLists.txt @@ -70,6 +70,7 @@ SET(FemScripts_SRCS _CommandConstraintSelfWeight.py _CommandMaterialMechanicalNonlinear.py _CommandMechanicalMaterial.py + _CommandMeshGmshFromShape.py _CommandMeshNetgenFromShape.py _CommandPurgeResults.py _CommandRunSolver.py diff --git a/src/Mod/Fem/CMakeLists.txt b/src/Mod/Fem/CMakeLists.txt index 3a8f33ce4..b6e5c26c5 100755 --- a/src/Mod/Fem/CMakeLists.txt +++ b/src/Mod/Fem/CMakeLists.txt @@ -39,6 +39,7 @@ INSTALL( FemMeshGmsh.py _FemMeshGmsh.py _ViewProviderFemMeshGmsh.py + _CommandMeshGmshFromShape.py FemBeamSection.py _FemBeamSection.py diff --git a/src/Mod/Fem/Gui/Workbench.cpp b/src/Mod/Fem/Gui/Workbench.cpp index 86a3985ec..543289e9b 100755 --- a/src/Mod/Fem/Gui/Workbench.cpp +++ b/src/Mod/Fem/Gui/Workbench.cpp @@ -59,6 +59,7 @@ Gui::ToolBarItem* Workbench::setupToolBars() const << "Fem_SolverCalculix" // << "Fem_SolverZ88" << "Fem_MeshNetgenFromShape" + << "Fem_MeshGmshFromShape" << "Fem_MechanicalMaterial" << "Fem_MaterialMechanicalNonlinear" << "Fem_BeamSection" @@ -119,6 +120,7 @@ Gui::MenuItem* Workbench::setupMenuBar() const << "Fem_SolverCalculix" << "Fem_SolverZ88" << "Fem_MeshNetgenFromShape" + << "Fem_MeshGmshFromShape" << "Fem_MechanicalMaterial" << "Fem_MaterialMechanicalNonlinear" << "Fem_BeamSection" diff --git a/src/Mod/Fem/InitGui.py b/src/Mod/Fem/InitGui.py index 369e21f59..4aa64f99c 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 _CommandMeshGmshFromShape import _CommandMeshNetgenFromShape import _CommandAnalysis import _CommandShellThickness diff --git a/src/Mod/Fem/_CommandMeshGmshFromShape.py b/src/Mod/Fem/_CommandMeshGmshFromShape.py new file mode 100644 index 000000000..c7f628d2f --- /dev/null +++ b/src/Mod/Fem/_CommandMeshGmshFromShape.py @@ -0,0 +1,65 @@ +# *************************************************************************** +# * * +# * 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 GMSH Mesh From Shape" +__author__ = "Bernd Hahnebach" +__url__ = "http://www.freecadweb.org" + +## @package CommandMeshGmshFromShape +# \ingroup FEM + +import FreeCAD +from FemCommands import FemCommands +import FreeCADGui +import FemGui +from PySide import QtCore + + +class _CommandMeshGmshFromShape(FemCommands): + # the Fem_MeshGmshFromShape command definition + def __init__(self): + super(_CommandMeshGmshFromShape, self).__init__() + self.resources = {'Pixmap': 'fem-fem-mesh-from-shape', + 'MenuText': QtCore.QT_TRANSLATE_NOOP("Fem_MeshGmshFromShape", "FEM mesh from shape by GMSH"), + 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Fem_MeshGmshFromShape", "Create a FEM mesh from a shape by GMSH mesher")} + self.is_active = 'with_part_feature' + + def Activated(self): + FreeCAD.ActiveDocument.openTransaction("Create FEM mesh by GMSH") + FreeCADGui.addModule("FemGui") + sel = FreeCADGui.Selection.getSelection() + if (len(sel) == 1): + if(sel[0].isDerivedFrom("Part::Feature")): + mesh_obj_name = sel[0].Name + "_Mesh" + FreeCADGui.addModule("FemMeshGmsh") + FreeCADGui.doCommand("FemMeshGmsh.makeFemMeshGmsh('" + mesh_obj_name + "')") + FreeCADGui.doCommand("App.ActiveDocument.ActiveObject.Part = App.ActiveDocument." + sel[0].Name) + if FemGui.getActiveAnalysis(): + FreeCADGui.addModule("FemGui") + FreeCADGui.doCommand("FemGui.getActiveAnalysis().Member = FemGui.getActiveAnalysis().Member + [App.ActiveDocument.ActiveObject]") + FreeCADGui.doCommand("Gui.ActiveDocument.setEdit(App.ActiveDocument.ActiveObject.Name)") + + FreeCADGui.Selection.clearSelection() + + +if FreeCAD.GuiUp: + FreeCADGui.addCommand('Fem_MeshGmshFromShape', _CommandMeshGmshFromShape())