diff --git a/src/Mod/Fem/Gui/Resources/Fem.qrc b/src/Mod/Fem/Gui/Resources/Fem.qrc
index f30970544..801df8911 100755
--- a/src/Mod/Fem/Gui/Resources/Fem.qrc
+++ b/src/Mod/Fem/Gui/Resources/Fem.qrc
@@ -15,6 +15,7 @@
icons/Fem_Inp_Editor.svg
icons/Fem_Material.svg
icons/Fem_NewAnalysis.svg
+ icons/Fem_Purge_Results.svg
icons/Fem_Result.svg
icons/Fem_ResultDisplacement.svg
icons/Fem_ResultStress.svg
diff --git a/src/Mod/Fem/Gui/Resources/icons/Fem_Purge_Results.svg b/src/Mod/Fem/Gui/Resources/icons/Fem_Purge_Results.svg
new file mode 100644
index 000000000..955c3151c
--- /dev/null
+++ b/src/Mod/Fem/Gui/Resources/icons/Fem_Purge_Results.svg
@@ -0,0 +1,185 @@
+
+
+
+
diff --git a/src/Mod/Fem/Gui/Workbench.cpp b/src/Mod/Fem/Gui/Workbench.cpp
index 54a56b9de..367e20f09 100755
--- a/src/Mod/Fem/Gui/Workbench.cpp
+++ b/src/Mod/Fem/Gui/Workbench.cpp
@@ -69,6 +69,7 @@ Gui::ToolBarItem* Workbench::setupToolBars() const
<< "Fem_ConstraintPulley"
<< "Separator"
<< "Fem_MechanicalJobControl"
+ << "Fem_PurgeResults"
<< "Fem_ShowResult";
return root;
}
@@ -94,6 +95,7 @@ Gui::MenuItem* Workbench::setupMenuBar() const
<< "Fem_ConstraintPulley"
<< "Separator"
<< "Fem_MechanicalJobControl"
+ << "Fem_PurgeResults"
<< "Fem_ShowResult";
return root;
diff --git a/src/Mod/Fem/MechanicalAnalysis.py b/src/Mod/Fem/MechanicalAnalysis.py
index ba168b328..430b308c3 100644
--- a/src/Mod/Fem/MechanicalAnalysis.py
+++ b/src/Mod/Fem/MechanicalAnalysis.py
@@ -131,6 +131,20 @@ class _CommandMechanicalJobControl:
return FreeCADGui.ActiveDocument is not None and FemGui.getActiveAnalysis() is not None
+class _CommandPurgeFemResults:
+ def GetResources(self):
+ return {'Pixmap': 'Fem_Purge_Results',
+ 'MenuText': QtCore.QT_TRANSLATE_NOOP("Fem_PurgeResults", "Purge results"),
+ 'Accel': "S, S",
+ 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Fem_PurgeResults", "Purge results from an analysis")}
+
+ def Activated(self):
+ purge_fem_results()
+
+ def IsActive(self):
+ return FreeCADGui.ActiveDocument is not None and results_present()
+
+
class _CommandMechanicalShowResult:
"the Fem JobControl command definition"
def GetResources(self):
@@ -617,7 +631,36 @@ class _ResultControlTaskPanel:
def reject(self):
FreeCADGui.Control.closeDialog()
+# Helpers
+
+
+def results_present():
+ import FemGui
+ results = False
+ analysis_members = FemGui.getActiveAnalysis().Member
+ for o in analysis_members:
+ if o.isDerivedFrom('Fem::FemResultVector'):
+ results = True
+ elif o.isDerivedFrom("Fem::FemResultValue") and o.DataType == 'VonMisesStress':
+ results = True
+ return results
+
+
+def purge_fem_results(Analysis=None):
+ import FemGui
+ if Analysis is None:
+ analysis_members = FemGui.getActiveAnalysis().Member
+ else:
+ analysis_members = FemGui.Analysis().Member
+ for o in analysis_members:
+ if (o.isDerivedFrom('Fem::FemResultVector') or
+ (o.isDerivedFrom("Fem::FemResultValue") and o.DataType == 'VonMisesStress') or
+ (o.isDerivedFrom("Fem::FemResultValue") and o.DataType == 'AnalysisStats')):
+ FreeCAD.ActiveDocument.removeObject(o.Name)
+
+
FreeCADGui.addCommand('Fem_NewMechanicalAnalysis', _CommandNewMechanicalAnalysis())
FreeCADGui.addCommand('Fem_CreateFromShape', _CommandFemFromShape())
FreeCADGui.addCommand('Fem_MechanicalJobControl', _CommandMechanicalJobControl())
+FreeCADGui.addCommand('Fem_PurgeResults', _CommandPurgeFemResults())
FreeCADGui.addCommand('Fem_ShowResult', _CommandMechanicalShowResult())