FEM: Add Purge FEM results button

Signed-off-by: Przemo Firszt <przemo@firszt.eu>
This commit is contained in:
Przemo Firszt
2015-04-30 22:13:42 +01:00
parent c703fe8294
commit 92baddfce9
4 changed files with 231 additions and 0 deletions

View File

@@ -15,6 +15,7 @@
<file>icons/Fem_Inp_Editor.svg</file>
<file>icons/Fem_Material.svg</file>
<file>icons/Fem_NewAnalysis.svg</file>
<file>icons/Fem_Purge_Results.svg</file>
<file>icons/Fem_Result.svg</file>
<file>icons/Fem_ResultDisplacement.svg</file>
<file>icons/Fem_ResultStress.svg</file>

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 8.3 KiB

View File

@@ -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;

View File

@@ -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())