diff --git a/src/Mod/Fem/App/CMakeLists.txt b/src/Mod/Fem/App/CMakeLists.txt index ec6381866..4e577578c 100755 --- a/src/Mod/Fem/App/CMakeLists.txt +++ b/src/Mod/Fem/App/CMakeLists.txt @@ -63,6 +63,7 @@ SOURCE_GROUP("Module" FILES ${Mod_SRCS}) SET(FemScripts_SRCS _CommandAnalysis.py _CommandBeamSection.py + _CommandClearMesh.py _CommandControlSolver.py _CommandConstraintSelfWeight.py _CommandFEMMesh2Mesh.py @@ -71,6 +72,7 @@ SET(FemScripts_SRCS _CommandMeshGmshFromShape.py _CommandMeshNetgenFromShape.py _CommandMeshRegion.py + _CommandPrintMeshInfo.py _CommandPurgeResults.py _CommandRunSolver.py _CommandShellThickness.py diff --git a/src/Mod/Fem/CMakeLists.txt b/src/Mod/Fem/CMakeLists.txt index 826cd10f0..3b7f9740c 100755 --- a/src/Mod/Fem/CMakeLists.txt +++ b/src/Mod/Fem/CMakeLists.txt @@ -24,7 +24,9 @@ INSTALL( TestFem.py FemCommands.py + _CommandClearMesh.py _CommandMeshNetgenFromShape.py + _CommandPrintMeshInfo.py _CommandPurgeResults.py _CommandRunSolver.py _CommandControlSolver.py diff --git a/src/Mod/Fem/Gui/Resources/Fem.qrc b/src/Mod/Fem/Gui/Resources/Fem.qrc index a100469ae..41b7f9698 100755 --- a/src/Mod/Fem/Gui/Resources/Fem.qrc +++ b/src/Mod/Fem/Gui/Resources/Fem.qrc @@ -25,10 +25,12 @@ icons/fem-control-solver.svg icons/fem-cylinder.svg icons/fem-data.png + icons/fem-femmesh-clear-mesh.svg icons/fem-femmesh-create-node-by-poly.svg icons/fem-femmesh-from-shape.svg icons/fem-femmesh-gmsh-from-shape.svg icons/fem-femmesh-netgen-from-shape.svg + icons/fem-femmesh-print-info.svg icons/fem-femmesh-region.svg icons/fem-femmesh-to-mesh.svg icons/fem-frequency-analysis.svg diff --git a/src/Mod/Fem/Gui/Resources/icons/fem-femmesh-clear-mesh.svg b/src/Mod/Fem/Gui/Resources/icons/fem-femmesh-clear-mesh.svg new file mode 100644 index 000000000..00cc0d7a5 --- /dev/null +++ b/src/Mod/Fem/Gui/Resources/icons/fem-femmesh-clear-mesh.svg @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/Mod/Fem/Gui/Resources/icons/fem-femmesh-print-info.svg b/src/Mod/Fem/Gui/Resources/icons/fem-femmesh-print-info.svg new file mode 100644 index 000000000..012bf6ba0 --- /dev/null +++ b/src/Mod/Fem/Gui/Resources/icons/fem-femmesh-print-info.svg @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/Mod/Fem/Gui/Workbench.cpp b/src/Mod/Fem/Gui/Workbench.cpp index 1038afa47..32e249f29 100755 --- a/src/Mod/Fem/Gui/Workbench.cpp +++ b/src/Mod/Fem/Gui/Workbench.cpp @@ -50,6 +50,14 @@ Workbench::~Workbench() { } +void Workbench::setupContextMenu(const char* recipient, Gui::MenuItem* item) const +{ + StdWorkbench::setupContextMenu( recipient, item ); + *item << "Separator" + << "Fem_ClearMesh" + << "Fem_PrintMeshInfo"; +} + Gui::ToolBarItem* Workbench::setupToolBars() const { Gui::ToolBarItem* root = StdWorkbench::setupToolBars(); diff --git a/src/Mod/Fem/Gui/Workbench.h b/src/Mod/Fem/Gui/Workbench.h index 036cc638b..acc43fb2d 100755 --- a/src/Mod/Fem/Gui/Workbench.h +++ b/src/Mod/Fem/Gui/Workbench.h @@ -38,6 +38,7 @@ class FemGuiExport Workbench : public Gui::StdWorkbench public: Workbench(); virtual ~Workbench(); + void setupContextMenu(const char* recipient, Gui::MenuItem*) const; protected: Gui::ToolBarItem* setupToolBars() const; diff --git a/src/Mod/Fem/InitGui.py b/src/Mod/Fem/InitGui.py index 65985a2f2..ae33e45f2 100644 --- a/src/Mod/Fem/InitGui.py +++ b/src/Mod/Fem/InitGui.py @@ -48,6 +48,8 @@ class FemWorkbench (Workbench): import _CommandShowResult import _CommandRunSolver import _CommandPurgeResults + import _CommandClearMesh + import _CommandPrintMeshInfo import _CommandControlSolver import _CommandFEMMesh2Mesh import _CommandMeshGmshFromShape diff --git a/src/Mod/Fem/_CommandClearMesh.py b/src/Mod/Fem/_CommandClearMesh.py new file mode 100644 index 000000000..d4364bd59 --- /dev/null +++ b/src/Mod/Fem/_CommandClearMesh.py @@ -0,0 +1,56 @@ +# *************************************************************************** +# * * +# * 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__ = "Clear the FemMesh of a FEM mesh object" +__author__ = "Bernd Hahnebach" +__url__ = "http://www.freecadweb.org" + +## @package CommandClearMesh +# \ingroup FEM + +import FreeCAD +from FemCommands import FemCommands +import FreeCADGui +from PySide import QtCore + + +class _CommandClearMesh(FemCommands): + "clear the FEM mesh" + def __init__(self): + super(_CommandClearMesh, self).__init__() + self.resources = {'Pixmap': 'fem-femmesh-clear-mesh', + 'MenuText': QtCore.QT_TRANSLATE_NOOP("Fem_ClearMesh", "Clear FEM mesh"), + # 'Accel': "Z, Z", + 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Fem_ClearMesh", "Clear the Mesh of a FEM mesh object")} + self.is_active = 'with_femmesh' + + def Activated(self): + sel = FreeCADGui.Selection.getSelection() + if len(sel) == 1 and sel[0].isDerivedFrom("Fem::FemMeshObject"): + FreeCAD.ActiveDocument.openTransaction("Clear FEM mesh") + FreeCADGui.addModule("Fem") + FreeCADGui.doCommand("App.ActiveDocument." + sel[0].Name + ".FemMesh = Fem.FemMesh()") + FreeCADGui.doCommand("App.ActiveDocument.recompute()") + + FreeCADGui.Selection.clearSelection() + +FreeCADGui.addCommand('Fem_ClearMesh',_CommandClearMesh()) diff --git a/src/Mod/Fem/_CommandPrintMeshInfo.py b/src/Mod/Fem/_CommandPrintMeshInfo.py new file mode 100644 index 000000000..e1a2c12c5 --- /dev/null +++ b/src/Mod/Fem/_CommandPrintMeshInfo.py @@ -0,0 +1,59 @@ +# *************************************************************************** +# * * +# * 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__ = "Print info of FEM mesh object" +__author__ = "Bernd Hahnebach" +__url__ = "http://www.freecadweb.org" + +## @package CommandPrintMeshInfo +# \ingroup FEM + +import FreeCAD +from FemCommands import FemCommands +import FreeCADGui +from PySide import QtCore +from PySide import QtGui + + +class _CommandPrintMeshInfo(FemCommands): + "Print FEM mesh info" + def __init__(self): + super(_CommandPrintMeshInfo, self).__init__() + self.resources = {'Pixmap': 'fem-femmesh-print-info', + 'MenuText': QtCore.QT_TRANSLATE_NOOP("Fem_PrintMeshInfo", "Print FEM mesh info"), + # 'Accel': "Z, Z", + 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Fem_PrintMeshInfo", "Print FEM mesh info")} + self.is_active = 'with_femmesh' + + def Activated(self): + sel = FreeCADGui.Selection.getSelection() + if len(sel) == 1 and sel[0].isDerivedFrom("Fem::FemMeshObject"): + FreeCAD.ActiveDocument.openTransaction("Print FEM mesh info") + FreeCADGui.doCommand("print(App.ActiveDocument." + sel[0].Name + ".FemMesh)") + + FreeCADGui.addModule("PySide") + FreeCADGui.doCommand("mesh_info = str(App.ActiveDocument." + sel[0].Name + ".FemMesh)") + FreeCADGui.doCommand("PySide.QtGui.QMessageBox.information(None, 'FEM Mesh Info', mesh_info)") + + FreeCADGui.Selection.clearSelection() + +FreeCADGui.addCommand('Fem_PrintMeshInfo',_CommandPrintMeshInfo())