From 40243fc89ab2508901ad788570af825cbc5f7bbc Mon Sep 17 00:00:00 2001 From: qingfengxia Date: Wed, 10 Aug 2016 15:34:37 +0100 Subject: [PATCH] Add Command and Icon FemConstraintFluidBoundary for CFD analysis --- src/Mod/Fem/Gui/Command.cpp | 48 ++++- src/Mod/Fem/Gui/Resources/Fem.qrc | 2 + .../Gui/Resources/icons/fem-cfd-analysis.svg | 135 +++++++++++++ .../icons/fem-constraint-fluid-boundary.svg | 183 ++++++++++++++++++ src/Mod/Fem/Gui/Workbench.cpp | 16 +- 5 files changed, 377 insertions(+), 7 deletions(-) create mode 100644 src/Mod/Fem/Gui/Resources/icons/fem-cfd-analysis.svg create mode 100644 src/Mod/Fem/Gui/Resources/icons/fem-constraint-fluid-boundary.svg diff --git a/src/Mod/Fem/Gui/Command.cpp b/src/Mod/Fem/Gui/Command.cpp index 0f86c667e..36e8a5a99 100644 --- a/src/Mod/Fem/Gui/Command.cpp +++ b/src/Mod/Fem/Gui/Command.cpp @@ -525,6 +525,52 @@ bool CmdFemConstraintForce::isActive(void) return FemGui::ActiveAnalysisObserver::instance()->hasActiveObject(); } + + +//===================================================================================== + +DEF_STD_CMD_A(CmdFemConstraintFluidBoundary); + +CmdFemConstraintFluidBoundary::CmdFemConstraintFluidBoundary() + : Command("Fem_ConstraintFluidBoundary") +{ + sAppModule = "Fem"; + sGroup = QT_TR_NOOP("Fem"); + sMenuText = QT_TR_NOOP("Create fluid condition condition"); + sToolTipText = QT_TR_NOOP("Create fluid boundary condition on face entity"); + sWhatsThis = "Fem_ConstraintFluidBoundary"; + sStatusTip = sToolTipText; + sPixmap = "fem-constraint-fluid-boundary"; +} + +void CmdFemConstraintFluidBoundary::activated(int iMsg) +{ + Fem::FemAnalysis *Analysis; + + if(getConstraintPrerequisits(&Analysis)) + return; + + std::string FeatName = getUniqueObjectName("ConstraintFluidBoundary"); + + openCommand("Create fluid boundary condition on face geometry"); + doCommand(Doc,"App.activeDocument().addObject(\"Fem::ConstraintFluidBoundary\",\"%s\")",FeatName.c_str()); + doCommand(Doc,"App.activeDocument().%s.Scale = 1",FeatName.c_str()); //OvG: set initial scale to 1 + //BoundaryValue is already the default value + doCommand(Doc,"App.activeDocument().%s.Member = App.activeDocument().%s.Member + [App.activeDocument().%s]", + Analysis->getNameInDocument(),Analysis->getNameInDocument(),FeatName.c_str()); + + doCommand(Doc,"%s",gethideMeshShowPartStr(FeatName).c_str()); //OvG: Hide meshes and show parts + updateActive(); + + doCommand(Gui,"Gui.activeDocument().setEdit('%s')",FeatName.c_str()); +} + +bool CmdFemConstraintFluidBoundary::isActive(void) +{ + return FemGui::ActiveAnalysisObserver::instance()->hasActiveObject(); +} + + //===================================================================================== DEF_STD_CMD_A(CmdFemConstraintPressure); @@ -1363,7 +1409,7 @@ void CreateFemCommands(void) rcCmdMgr.addCommand(new CmdFemConstraintInitialTemperature()); rcCmdMgr.addCommand(new CmdFemConstraintPlaneRotation()); rcCmdMgr.addCommand(new CmdFemConstraintContact()); - + rcCmdMgr.addCommand(new CmdFemConstraintFluidBoundary()); #ifdef FC_USE_VTK rcCmdMgr.addCommand(new CmdFemPostCreateClipFilter); rcCmdMgr.addCommand(new CmdFemPostCreateScalarClipFilter); diff --git a/src/Mod/Fem/Gui/Resources/Fem.qrc b/src/Mod/Fem/Gui/Resources/Fem.qrc index 647f7550f..9e93196c3 100755 --- a/src/Mod/Fem/Gui/Resources/Fem.qrc +++ b/src/Mod/Fem/Gui/Resources/Fem.qrc @@ -3,6 +3,8 @@ icons/fem-fem-mesh-from-shape.svg icons/fem-fem-mesh-create-node-by-poly.svg icons/fem-analysis.svg + icons/fem-cfd-analysis.svg + icons/fem-constraint-fluid-boundary.svg icons/fem-solver.svg icons/fem-constraint-displacement.svg icons/fem-constraint-selfweight.svg diff --git a/src/Mod/Fem/Gui/Resources/icons/fem-cfd-analysis.svg b/src/Mod/Fem/Gui/Resources/icons/fem-cfd-analysis.svg new file mode 100644 index 000000000..9a5424206 --- /dev/null +++ b/src/Mod/Fem/Gui/Resources/icons/fem-cfd-analysis.svg @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + A + CFD + + diff --git a/src/Mod/Fem/Gui/Resources/icons/fem-constraint-fluid-boundary.svg b/src/Mod/Fem/Gui/Resources/icons/fem-constraint-fluid-boundary.svg new file mode 100644 index 000000000..62a78bf5d --- /dev/null +++ b/src/Mod/Fem/Gui/Resources/icons/fem-constraint-fluid-boundary.svg @@ -0,0 +1,183 @@ + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/Fem/Gui/Workbench.cpp b/src/Mod/Fem/Gui/Workbench.cpp index ee927b57b..aaf82f115 100755 --- a/src/Mod/Fem/Gui/Workbench.cpp +++ b/src/Mod/Fem/Gui/Workbench.cpp @@ -68,7 +68,7 @@ Gui::ToolBarItem* Workbench::setupToolBars() const << "Fem_ConstraintFixed" << "Fem_ConstraintDisplacement" << "Fem_ConstraintPlaneRotation" - << "Fem_ConstraintContact" + << "Fem_ConstraintContact" << "Separator" << "Fem_ConstraintSelfWeight" << "Fem_ConstraintForce" @@ -77,11 +77,13 @@ Gui::ToolBarItem* Workbench::setupToolBars() const << "Fem_ConstraintBearing" << "Fem_ConstraintGear" << "Fem_ConstraintPulley" + << "Separator" + << "Fem_ConstraintFluidBoundary" << "Separator" << "Fem_ConstraintTemperature" << "Fem_ConstraintHeatflux" - << "Fem_ConstraintInitialTemperature" - << "Separator" + << "Fem_ConstraintInitialTemperature" + << "Separator" << "Fem_ControlSolver" << "Fem_RunSolver" << "Separator" @@ -125,7 +127,7 @@ Gui::MenuItem* Workbench::setupMenuBar() const << "Fem_ConstraintFixed" << "Fem_ConstraintDisplacement" << "Fem_ConstraintPlaneRotation" - << "Fem_ConstraintContact" + << "Fem_ConstraintContact" << "Separator" << "Fem_ConstraintSelfWeight" << "Fem_ConstraintForce" @@ -135,10 +137,12 @@ Gui::MenuItem* Workbench::setupMenuBar() const << "Fem_ConstraintGear" << "Fem_ConstraintPulley" << "Separator" + << "Fem_ConstraintFluidBoundary" + << "Separator" << "Fem_ConstraintTemperature" << "Fem_ConstraintHeatflux" - << "Fem_ConstraintInitialTemperature" - << "Separator" + << "Fem_ConstraintInitialTemperature" + << "Separator" << "Fem_ControlSolver" << "Fem_RunSolver" << "Separator"