From 4db69850fb44258f6fa6f4ba2f18ebae2a770726 Mon Sep 17 00:00:00 2001 From: wmayer Date: Thu, 23 Apr 2015 23:36:05 +0200 Subject: [PATCH] + FEM: reimplement function to create FEM mesh from shape --- src/Mod/Fem/Gui/Command.cpp | 2 +- src/Mod/Fem/Gui/Workbench.cpp | 1 + src/Mod/Fem/MechanicalAnalysis.py | 27 +++++++++++++++++++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/Mod/Fem/Gui/Command.cpp b/src/Mod/Fem/Gui/Command.cpp index 7e6509088..a02c492ce 100755 --- a/src/Mod/Fem/Gui/Command.cpp +++ b/src/Mod/Fem/Gui/Command.cpp @@ -591,7 +591,7 @@ void CmdFemCreateNodesSet::activated(int iMsg) bool CmdFemCreateNodesSet::isActive(void) { - return true; + return hasActiveDocument(); } //-------------------------------------------------------------------------------------- diff --git a/src/Mod/Fem/Gui/Workbench.cpp b/src/Mod/Fem/Gui/Workbench.cpp index 483958b8e..c3cfc6fae 100755 --- a/src/Mod/Fem/Gui/Workbench.cpp +++ b/src/Mod/Fem/Gui/Workbench.cpp @@ -79,6 +79,7 @@ Gui::MenuItem* Workbench::setupMenuBar() const root->insertItem(item, fem); fem->setCommand("&FEM"); *fem << "Fem_NewMechanicalAnalysis" + << "Fem_CreateFromShape" << "Fem_MechanicalMaterial" << "Separator" << "Fem_CreateNodesSet" diff --git a/src/Mod/Fem/MechanicalAnalysis.py b/src/Mod/Fem/MechanicalAnalysis.py index c0a27f7ec..0a5df3ced 100644 --- a/src/Mod/Fem/MechanicalAnalysis.py +++ b/src/Mod/Fem/MechanicalAnalysis.py @@ -84,6 +84,32 @@ class _CommandNewMechanicalAnalysis: return FreeCADGui.ActiveDocument is not None and FemGui.getActiveAnalysis() is None + +class _CommandFemFromShape: + def GetResources(self): + return {'MenuText': QtCore.QT_TRANSLATE_NOOP("Fem_CreateFromShape", "Create FEM mesh"), + 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Fem_CreateFromShape", "Create FEM mesh from shape")} + + def Activated(self): + FreeCAD.ActiveDocument.openTransaction("Create FEM mesh") + FreeCADGui.addModule("FemGui") + FreeCADGui.addModule("MechanicalAnalysis") + sel = FreeCADGui.Selection.getSelection() + if (len(sel) == 1): + if(sel[0].isDerivedFrom("Part::Feature")): + FreeCADGui.doCommand("App.activeDocument().addObject('Fem::FemMeshShapeNetgenObject', '" + sel[0].Name + "_Mesh')") + FreeCADGui.doCommand("App.activeDocument().ActiveObject.Shape = App.activeDocument()." + sel[0].Name) + FreeCADGui.doCommand("Gui.activeDocument().setEdit(App.ActiveDocument.ActiveObject.Name)") + + FreeCADGui.Selection.clearSelection() + + def IsActive(self): + sel = FreeCADGui.Selection.getSelection() + if len(sel) == 1: + return sel[0].isDerivedFrom("Part::Feature") + return False + + class _CommandMechanicalJobControl: "the Fem JobControl command definition" def GetResources(self): @@ -753,5 +779,6 @@ class _ResultControlTaskPanel: FreeCADGui.Control.closeDialog() FreeCADGui.addCommand('Fem_NewMechanicalAnalysis', _CommandNewMechanicalAnalysis()) +FreeCADGui.addCommand('Fem_CreateFromShape', _CommandFemFromShape()) FreeCADGui.addCommand('Fem_MechanicalJobControl', _CommandMechanicalJobControl()) FreeCADGui.addCommand('Fem_ShowResult', _CommandMechanicalShowResult())