Add ActiveAnalysis logic
This commit is contained in:
parent
527a6f5562
commit
3cca1594da
|
@ -68,7 +68,7 @@ static PyObject * setActiveAnalysis(PyObject *self, PyObject *args)
|
|||
return 0;
|
||||
}
|
||||
|
||||
// get the gui document of the Assembly Item
|
||||
// get the gui document of the Analysis Item
|
||||
ActiveAnalysis = static_cast<Fem::FemAnalysis*>(obj);
|
||||
ActiveAppDoc = ActiveAnalysis->getDocument();
|
||||
ActiveGuiDoc = Gui::Application::Instance->getDocument(ActiveAppDoc);
|
||||
|
@ -95,5 +95,9 @@ static PyObject * getActiveAnalysis(PyObject *self, PyObject *args)
|
|||
|
||||
/* registration table */
|
||||
struct PyMethodDef FemGui_Import_methods[] = {
|
||||
{"setActiveAnalysis" ,setActiveAnalysis ,METH_VARARGS,
|
||||
"setActiveAnalysis(AnalysisObject) -- Set the Analysis object in work."},
|
||||
{"getActiveAnalysis" ,getActiveAnalysis ,METH_VARARGS,
|
||||
"getActiveAnalysis() -- Returns the Analysis object in work."},
|
||||
{NULL, NULL} /* end of table marker */
|
||||
};
|
||||
|
|
|
@ -54,11 +54,33 @@
|
|||
#include <Mod/Fem/App/FemSetNodesObject.h>
|
||||
#include <strstream>
|
||||
#include <Mod/Fem/App/FemConstraint.h>
|
||||
#include <Mod/Fem/App/FemAnalysis.h>
|
||||
|
||||
|
||||
#include "Hypothesis.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
|
||||
extern Fem::FemAnalysis *ActiveAnalysis;
|
||||
|
||||
|
||||
bool getConstraintPrerequisits(Fem::FemAnalysis **Analysis)
|
||||
{
|
||||
if(!ActiveAnalysis || !ActiveAnalysis->getTypeId().isDerivedFrom(Fem::FemAnalysis::getClassTypeId())){
|
||||
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("No active Analysis"),
|
||||
QObject::tr("You need to create or activate a Analysis"));
|
||||
return true;
|
||||
}
|
||||
|
||||
*Analysis = static_cast<Fem::FemAnalysis*>(ActiveAnalysis);
|
||||
|
||||
// return with no error
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
|
||||
DEF_STD_CMD_A(CmdFemCreateFromShape);
|
||||
|
||||
CmdFemCreateFromShape::CmdFemCreateFromShape()
|
||||
|
@ -130,6 +152,9 @@ void CmdFemCreateAnalysis::activated(int iMsg)
|
|||
doCommand(Doc,"App.activeDocument().addObject('Fem::FemMeshShapeNetgenObject','%s')",MeshName.c_str());
|
||||
doCommand(Doc,"App.activeDocument().ActiveObject.Shape = App.activeDocument().%s",base->getNameInDocument());
|
||||
doCommand(Doc,"App.activeDocument().%s.Member = App.activeDocument().%s",AnalysisName.c_str(),MeshName.c_str());
|
||||
addModule(Gui,"FemGui");
|
||||
doCommand(Gui,"FemGui.setActiveAnalysis(App.activeDocument().%s)",AnalysisName.c_str());
|
||||
|
||||
updateActive();
|
||||
|
||||
}
|
||||
|
@ -160,10 +185,16 @@ CmdFemConstraintBearing::CmdFemConstraintBearing()
|
|||
|
||||
void CmdFemConstraintBearing::activated(int iMsg)
|
||||
{
|
||||
Fem::FemAnalysis *Analysis;
|
||||
|
||||
if(getConstraintPrerequisits(&Analysis))
|
||||
return;
|
||||
|
||||
std::string FeatName = getUniqueObjectName("FemConstraintBearing");
|
||||
|
||||
openCommand("Make FEM constraint for bearing");
|
||||
doCommand(Doc,"App.activeDocument().addObject(\"Fem::ConstraintBearing\",\"%s\")",FeatName.c_str());
|
||||
doCommand(Doc,"App.activeDocument().%s.Member = App.activeDocument().%s.Member + [App.activeDocument().%s]",Analysis->getNameInDocument(),Analysis->getNameInDocument(),FeatName.c_str());
|
||||
updateActive();
|
||||
|
||||
doCommand(Gui,"Gui.activeDocument().setEdit('%s')",FeatName.c_str());
|
||||
|
@ -192,10 +223,16 @@ CmdFemConstraintFixed::CmdFemConstraintFixed()
|
|||
|
||||
void CmdFemConstraintFixed::activated(int iMsg)
|
||||
{
|
||||
Fem::FemAnalysis *Analysis;
|
||||
|
||||
if(getConstraintPrerequisits(&Analysis))
|
||||
return;
|
||||
|
||||
std::string FeatName = getUniqueObjectName("FemConstraintFixed");
|
||||
|
||||
openCommand("Make FEM constraint fixed geometry");
|
||||
doCommand(Doc,"App.activeDocument().addObject(\"Fem::ConstraintFixed\",\"%s\")",FeatName.c_str());
|
||||
doCommand(Doc,"App.activeDocument().%s.Member = App.activeDocument().%s.Member + [App.activeDocument().%s]",Analysis->getNameInDocument(),Analysis->getNameInDocument(),FeatName.c_str());
|
||||
updateActive();
|
||||
|
||||
doCommand(Gui,"Gui.activeDocument().setEdit('%s')",FeatName.c_str());
|
||||
|
@ -224,11 +261,17 @@ CmdFemConstraintForce::CmdFemConstraintForce()
|
|||
|
||||
void CmdFemConstraintForce::activated(int iMsg)
|
||||
{
|
||||
Fem::FemAnalysis *Analysis;
|
||||
|
||||
if(getConstraintPrerequisits(&Analysis))
|
||||
return;
|
||||
|
||||
std::string FeatName = getUniqueObjectName("FemConstraintForce");
|
||||
|
||||
openCommand("Make FEM constraint force on geometry");
|
||||
doCommand(Doc,"App.activeDocument().addObject(\"Fem::ConstraintForce\",\"%s\")",FeatName.c_str());
|
||||
doCommand(Doc,"App.activeDocument().%s.Force = 0.0",FeatName.c_str());
|
||||
doCommand(Doc,"App.activeDocument().%s.Member = App.activeDocument().%s.Member + [App.activeDocument().%s]",Analysis->getNameInDocument(),Analysis->getNameInDocument(),FeatName.c_str());
|
||||
updateActive();
|
||||
|
||||
doCommand(Gui,"Gui.activeDocument().setEdit('%s')",FeatName.c_str());
|
||||
|
@ -257,11 +300,16 @@ CmdFemConstraintGear::CmdFemConstraintGear()
|
|||
|
||||
void CmdFemConstraintGear::activated(int iMsg)
|
||||
{
|
||||
Fem::FemAnalysis *Analysis;
|
||||
|
||||
if(getConstraintPrerequisits(&Analysis))
|
||||
return;
|
||||
std::string FeatName = getUniqueObjectName("FemConstraintGear");
|
||||
|
||||
openCommand("Make FEM constraint for gear");
|
||||
doCommand(Doc,"App.activeDocument().addObject(\"Fem::ConstraintGear\",\"%s\")",FeatName.c_str());
|
||||
doCommand(Doc,"App.activeDocument().%s.Diameter = 100.0",FeatName.c_str());
|
||||
doCommand(Doc,"App.activeDocument().%s.Member = App.activeDocument().%s.Member + [App.activeDocument().%s]",Analysis->getNameInDocument(),Analysis->getNameInDocument(),FeatName.c_str());
|
||||
updateActive();
|
||||
|
||||
doCommand(Gui,"Gui.activeDocument().setEdit('%s')",FeatName.c_str());
|
||||
|
@ -290,6 +338,11 @@ CmdFemConstraintPulley::CmdFemConstraintPulley()
|
|||
|
||||
void CmdFemConstraintPulley::activated(int iMsg)
|
||||
{
|
||||
Fem::FemAnalysis *Analysis;
|
||||
|
||||
if(getConstraintPrerequisits(&Analysis))
|
||||
return;
|
||||
|
||||
std::string FeatName = getUniqueObjectName("FemConstraintPulley");
|
||||
|
||||
openCommand("Make FEM constraint for pulley");
|
||||
|
@ -299,6 +352,7 @@ void CmdFemConstraintPulley::activated(int iMsg)
|
|||
doCommand(Doc,"App.activeDocument().%s.CenterDistance = 500.0",FeatName.c_str());
|
||||
doCommand(Doc,"App.activeDocument().%s.Force = 100.0",FeatName.c_str());
|
||||
doCommand(Doc,"App.activeDocument().%s.TensionForce = 100.0",FeatName.c_str());
|
||||
doCommand(Doc,"App.activeDocument().%s.Member = App.activeDocument().%s.Member + [App.activeDocument().%s]",Analysis->getNameInDocument(),Analysis->getNameInDocument(),FeatName.c_str());
|
||||
updateActive();
|
||||
|
||||
doCommand(Gui,"Gui.activeDocument().setEdit('%s')",FeatName.c_str());
|
||||
|
@ -318,6 +372,11 @@ DEF_STD_CMD_A(CmdFemDefineNodesSet);
|
|||
|
||||
void DefineNodesCallback(void * ud, SoEventCallback * n)
|
||||
{
|
||||
Fem::FemAnalysis *Analysis;
|
||||
|
||||
if(getConstraintPrerequisits(&Analysis))
|
||||
return;
|
||||
|
||||
// show the wait cursor because this could take quite some time
|
||||
Gui::WaitCursor wc;
|
||||
|
||||
|
@ -374,6 +433,7 @@ void DefineNodesCallback(void * ud, SoEventCallback * n)
|
|||
Gui::Command::openCommand("Place robot");
|
||||
Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.addObject('Fem::FemSetNodesObject','NodeSet')");
|
||||
Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.ActiveObject.Nodes = %s",set.str().c_str());
|
||||
Gui::Command::doCommand(Gui::Command::Doc,"App.activeDocument().%s.Member = App.activeDocument().%s.Member + [App.activeDocument().NodeSet]",Analysis->getNameInDocument(),Analysis->getNameInDocument());
|
||||
////Gui::Command::updateActive();
|
||||
Gui::Command::commitCommand();
|
||||
|
||||
|
|
|
@ -59,6 +59,13 @@ ViewProviderAnalysis::~ViewProviderAnalysis()
|
|||
|
||||
}
|
||||
|
||||
bool ViewProviderAnalysis::doubleClicked(void)
|
||||
{
|
||||
Gui::Command::assureWorkbench("FemWorkbench");
|
||||
Gui::Command::addModule(Gui::Command::Gui,"FemGui");
|
||||
Gui::Command::doCommand(Gui::Command::Gui,"FemGui.setActiveAnalysis(App.activeDocument().%s)",this->getObject()->getNameInDocument());
|
||||
return true;
|
||||
}
|
||||
|
||||
std::vector<App::DocumentObject*> ViewProviderAnalysis::claimChildren(void)const
|
||||
{
|
||||
|
|
|
@ -50,6 +50,8 @@ public:
|
|||
/// destructor.
|
||||
~ViewProviderAnalysis();
|
||||
|
||||
virtual bool doubleClicked(void);
|
||||
|
||||
virtual std::vector<App::DocumentObject*> claimChildren(void)const;
|
||||
|
||||
//virtual std::vector<App::DocumentObject*> claimChildren3D(void)const;
|
||||
|
|
Loading…
Reference in New Issue
Block a user