Skip to content

Commit

Permalink
Revert "FEM: Updated fix to constraint displacement reference deletio…
Browse files Browse the repository at this point in the history
…n, update hide show, remove custom input writer, update vertice, edge, face selection."

This reverts commit ac4d466.
  • Loading branch information
yorikvanhavre committed Feb 19, 2016
1 parent fa6046e commit 577f208
Show file tree
Hide file tree
Showing 17 changed files with 129 additions and 109 deletions.
7 changes: 2 additions & 5 deletions src/Base/QuantityLexer.c
Original file line number Diff line number Diff line change
Expand Up @@ -109,10 +109,7 @@ typedef unsigned int flex_uint32_t;
#endif

/* Returned upon end-of-file. */
# ifdef YY_NULL
# undef YY_NULL
# define YY_NULL 0
# endif
#define YY_NULL 0

/* Promotes a possibly negative, possibly signed char to an unsigned
* integer for use as an array index. If the signed char is negative,
Expand Down Expand Up @@ -689,7 +686,7 @@ static int input (void );
if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
{ \
int c = '*'; \
unsigned int n; \
int n; \
for ( n = 0; n < max_size && \
(c = getc( yyin )) != EOF && c != '\n'; ++n ) \
buf[n] = (char) c; \
Expand Down
1 change: 1 addition & 0 deletions src/Mod/Fem/App/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,7 @@ SET(FemScripts_SRCS
MechanicalMaterial.py
SelectionObserverFem.py
TestFem.py
ccxInpWriterFemConstraintDisplacement.py

TaskPanelFemBeamSection.ui
TaskPanelFemShellThickness.ui
Expand Down
2 changes: 2 additions & 0 deletions src/Mod/Fem/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ INSTALL(
Init.py
InitGui.py

ccxInpWriterFemConstraintDisplacement.py

convert2TetGen.py

SelectionObserverFem.py
Expand Down
4 changes: 2 additions & 2 deletions src/Mod/Fem/FemCommands.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,8 +101,8 @@ def analysis_has_solver(self):
def hide_parts_constraints_show_meshes(self):
if FreeCAD.GuiUp:
for acnstrmesh in FreeCAD.activeDocument().Objects:
#if "Constraint" in acnstrmesh.TypeId:
# acnstrmesh.ViewObject.Visibility = False
if "Constraint" in acnstrmesh.TypeId:
acnstrmesh.ViewObject.Visibility = False
if "Mesh" in acnstrmesh.TypeId:
aparttoshow = acnstrmesh.Name.replace("_Mesh","")
for apart in FreeCAD.activeDocument().Objects:
Expand Down
23 changes: 11 additions & 12 deletions src/Mod/Fem/Gui/Command.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -81,12 +81,11 @@ bool getConstraintPrerequisits(Fem::FemAnalysis **Analysis)
}

//OvG: Visibility automation show parts and hide meshes on activation of a constraint
std::string gethideMeshShowPartStr(std::string showConstr="")
std::string gethideMeshShowPartStr()
{
return "for amesh in App.activeDocument().Objects:\n\
if \""+showConstr+"\" == amesh.Name:\n\
amesh.ViewObject.Visibility = True\n\
elif \"Mesh\" in amesh.TypeId:\n\
return
"for amesh in App.activeDocument().Objects:\n\
if \"Mesh\" in amesh.TypeId:\n\
aparttoshow = amesh.Name.replace(\"_Mesh\",\"\")\n\
for apart in App.activeDocument().Objects:\n\
if aparttoshow == apart.Name:\n\
Expand Down Expand Up @@ -292,7 +291,7 @@ void CmdFemConstraintBearing::activated(int iMsg)
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());

doCommand(Doc,"%s",gethideMeshShowPartStr(FeatName).c_str()); //OvG: Hide meshes and show parts
doCommand(Doc,"%s",gethideMeshShowPartStr().c_str()); //OvG: Hide meshes and show parts

updateActive();

Expand Down Expand Up @@ -334,7 +333,7 @@ void CmdFemConstraintFixed::activated(int iMsg)
doCommand(Doc,"App.activeDocument().%s.Scale = 1",FeatName.c_str()); //OvG: set initial scale to 1
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
doCommand(Doc,"%s",gethideMeshShowPartStr().c_str()); //OvG: Hide meshes and show parts

updateActive();

Expand Down Expand Up @@ -378,7 +377,7 @@ void CmdFemConstraintForce::activated(int iMsg)
doCommand(Doc,"App.activeDocument().%s.Scale = 1",FeatName.c_str()); //OvG: set initial scale to 1
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
doCommand(Doc,"%s",gethideMeshShowPartStr().c_str()); //OvG: Hide meshes and show parts

updateActive();

Expand Down Expand Up @@ -423,7 +422,7 @@ void CmdFemConstraintPressure::activated(int iMsg)
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
doCommand(Doc,"%s",gethideMeshShowPartStr().c_str()); //OvG: Hide meshes and show parts

updateActive();

Expand Down Expand Up @@ -464,7 +463,7 @@ void CmdFemConstraintGear::activated(int iMsg)
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());

doCommand(Doc,"%s",gethideMeshShowPartStr(FeatName).c_str()); //OvG: Hide meshes and show parts
doCommand(Doc,"%s",gethideMeshShowPartStr().c_str()); //OvG: Hide meshes and show parts

updateActive();

Expand Down Expand Up @@ -510,7 +509,7 @@ void CmdFemConstraintPulley::activated(int iMsg)
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());

doCommand(Doc,"%s",gethideMeshShowPartStr(FeatName).c_str()); //OvG: Hide meshes and show parts
doCommand(Doc,"%s",gethideMeshShowPartStr().c_str()); //OvG: Hide meshes and show parts

updateActive();

Expand Down Expand Up @@ -552,7 +551,7 @@ void CmdFemConstraintDisplacement::activated(int iMsg)
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
doCommand(Doc,"%s",gethideMeshShowPartStr().c_str()); //OvG: Hide meshes and show parts

updateActive();

Expand Down
5 changes: 0 additions & 5 deletions src/Mod/Fem/Gui/TaskFemConstraint.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -181,11 +181,6 @@ const QString TaskFemConstraint::makeRefText(const App::DocumentObject* obj, con

//==== calls from the TaskView ===============================================================

void TaskDlgFemConstraint::open()
{
ConstraintView->setVisible(true);
Gui::Command::doCommand(Gui::Command::Doc,ViewProviderFemConstraint::gethideMeshShowPartStr((static_cast<Fem::Constraint*>(ConstraintView->getObject()))->getNameInDocument()).c_str()); //OvG: Hide meshes and show parts
}

bool TaskDlgFemConstraint::accept()
{
Expand Down
5 changes: 2 additions & 3 deletions src/Mod/Fem/Gui/TaskFemConstraint.h
Original file line number Diff line number Diff line change
Expand Up @@ -77,10 +77,9 @@ class TaskDlgFemConstraint : public Gui::TaskView::TaskDialog
Q_OBJECT

public:

/// is called the TaskView when the dialog is opened
void open();
/*
/// is called the TaskView when the dialog is opened
virtual void open() {}
/// is called by the framework if an button is clicked which has no accept or reject role
virtual void clicked(int) {}
/// is called by the framework if the dialog is accepted (Ok)
Expand Down
42 changes: 12 additions & 30 deletions src/Mod/Fem/Gui/TaskFemConstraintDisplacement.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -435,27 +435,10 @@ void TaskFemConstraintDisplacement::addToSelection()
addMe=false;
}
}
// limit constraint such that only vertexes or faces or edges can be used depending on what was selected first
std::string searchStr("");
if (subNames[subIt].find("Vertex")!=std::string::npos)
searchStr="Vertex";
else if (subNames[subIt].find("Edge")!=std::string::npos)
searchStr="Edge";
else
searchStr="Face";
if ((std::none_of(SubElements.begin(),SubElements.end(),[&](std::string const &s){return s.find(searchStr)!=std::string::npos;}))&&(SubElements.size()>0)){
std::string Msg="Only one type of selection (vertex,face or edge) per constraint allowed!";
QMessageBox::warning(this, tr("Selection error"),QString::fromStdString(Msg));
addMe=false;
}
if (addMe){
disconnect(ui->lw_references, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)),
this, SLOT(setSelection(QListWidgetItem*)));
Objects.push_back(obj);
SubElements.push_back(subNames[subIt]);
ui->lw_references->addItem(makeRefText(obj, subNames[subIt]));
connect(ui->lw_references, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)),
this, SLOT(setSelection(QListWidgetItem*)));
}
}
}
Expand All @@ -475,7 +458,7 @@ void TaskFemConstraintDisplacement::removeFromSelection()
Fem::ConstraintDisplacement* pcConstraint = static_cast<Fem::ConstraintDisplacement*>(ConstraintView->getObject());
std::vector<App::DocumentObject*> Objects = pcConstraint->References.getValues();
std::vector<std::string> SubElements = pcConstraint->References.getSubValues();
std::vector<unsigned int> itemsToDel;
std::vector<int> itemsToDel;
for (std::vector<Gui::SelectionObject>::iterator it = selection.begin(); it != selection.end(); ++it){//for every selected object
if (static_cast<std::string>(it->getTypeName()).substr(0,4).compare(std::string("Part"))!=0){
QMessageBox::warning(this, tr("Selection error"),tr("Selected object is not a part!"));
Expand All @@ -497,32 +480,30 @@ void TaskFemConstraintDisplacement::removeFromSelection()
}
}

std::sort(itemsToDel.begin(),itemsToDel.end());
while (itemsToDel.size()>0){
Objects.erase(Objects.begin()+itemsToDel.back());
SubElements.erase(SubElements.begin()+itemsToDel.back());
itemsToDel.pop_back();
}

//Update UI
disconnect(ui->lw_references, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)),
this, SLOT(setSelection(QListWidgetItem*)));

ui->lw_references->clear();
for (unsigned int j=0;j<Objects.size();j++){
ui->lw_references->addItem(makeRefText(Objects[j], SubElements[j]));
}
connect(ui->lw_references, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)),
this, SLOT(setSelection(QListWidgetItem*)));

pcConstraint->References.setValues(Objects,SubElements);
updateUI();
}

void TaskFemConstraintDisplacement::setSelection(QListWidgetItem* item){
std::string s = item->text().toStdString();
std::string docName=ConstraintView->getObject()->getDocument()->getName();


std::string s = item->text().toStdString();
std::string delimiter = ":";

size_t pos = 0;
Expand All @@ -532,13 +513,16 @@ void TaskFemConstraintDisplacement::setSelection(QListWidgetItem* item){
objName = s.substr(0, pos);
s.erase(0, pos + delimiter.length());
subName=s;

Gui::Selection().clearSelection();
Gui::Selection().addSelection(docName.c_str(),objName.c_str(),subName.c_str(),0,0,0);
}

void TaskFemConstraintDisplacement::onReferenceDeleted() {
TaskFemConstraintDisplacement::removeFromSelection(); //OvG: On right-click face is automatically selected, so just remove
int row = ui->lw_references->currentIndex().row();
TaskFemConstraint::onReferenceDeleted(row);
ui->lw_references->model()->removeRow(row);
ui->lw_references->setCurrentRow(0, QItemSelectionModel::ClearAndSelect);
}

const std::string TaskFemConstraintDisplacement::getReferences() const
Expand Down Expand Up @@ -600,10 +584,8 @@ void TaskDlgFemConstraintDisplacement::open()
{
// a transaction is already open at creation time of the panel
if (!Gui::Command::hasPendingCommand()) {
QString msg = QObject::tr("Constraint displacement");
QString msg = QObject::tr("Constraint normal stress");
Gui::Command::openCommand((const char*)msg.toUtf8());
ConstraintView->setVisible(true);
Gui::Command::doCommand(Gui::Command::Doc,ViewProviderFemConstraint::gethideMeshShowPartStr((static_cast<Fem::Constraint*>(ConstraintView->getObject()))->getNameInDocument()).c_str()); //OvG: Hide meshes and show parts
}
}

Expand Down Expand Up @@ -651,7 +633,7 @@ bool TaskDlgFemConstraintDisplacement::accept()
name.c_str(), parameterDisplacement->get_rotzfix() ? "True" : "False");

std::string scale = parameterDisplacement->getScale(); //OvG: determine modified scale
Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.Scale = %s", name.c_str(), scale.c_str()); //OvG: implement modified scale
Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.Scale = %s", name.c_str(), scale.c_str()); //OvG: implement modified scale
}
catch (const Base::Exception& e) {
QMessageBox::warning(parameter, tr("Input error"), QString::fromLatin1(e.what()));
Expand Down
11 changes: 0 additions & 11 deletions src/Mod/Fem/Gui/TaskFemConstraintFixed.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -213,17 +213,6 @@ TaskDlgFemConstraintFixed::TaskDlgFemConstraintFixed(ViewProviderFemConstraintFi

//==== calls from the TaskView ===============================================================

void TaskDlgFemConstraintFixed::open()
{
// a transaction is already open at creation time of the panel
if (!Gui::Command::hasPendingCommand()) {
QString msg = QObject::tr("Constraint fixed");
Gui::Command::openCommand((const char*)msg.toUtf8());
ConstraintView->setVisible(true);
Gui::Command::doCommand(Gui::Command::Doc,ViewProviderFemConstraint::gethideMeshShowPartStr((static_cast<Fem::Constraint*>(ConstraintView->getObject()))->getNameInDocument()).c_str()); //OvG: Hide meshes and show parts
}
}

bool TaskDlgFemConstraintFixed::accept()
{
std::string name = ConstraintView->getObject()->getNameInDocument();
Expand Down
2 changes: 1 addition & 1 deletion src/Mod/Fem/Gui/TaskFemConstraintFixed.h
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ class TaskDlgFemConstraintFixed : public TaskDlgFemConstraint

/// is called by the framework if the dialog is accepted (Ok)
virtual bool accept();
void open();

};

} //namespace FemGui
Expand Down
2 changes: 0 additions & 2 deletions src/Mod/Fem/Gui/TaskFemConstraintForce.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -342,8 +342,6 @@ void TaskDlgFemConstraintForce::open()
if (!Gui::Command::hasPendingCommand()) {
QString msg = QObject::tr("Constraint force");
Gui::Command::openCommand((const char*)msg.toUtf8());
ConstraintView->setVisible(true);
Gui::Command::doCommand(Gui::Command::Doc,ViewProviderFemConstraint::gethideMeshShowPartStr((static_cast<Fem::Constraint*>(ConstraintView->getObject()))->getNameInDocument()).c_str()); //OvG: Hide meshes and show parts
}
}

Expand Down
4 changes: 1 addition & 3 deletions src/Mod/Fem/Gui/TaskFemConstraintPressure.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -240,10 +240,8 @@ void TaskDlgFemConstraintPressure::open()
{
// a transaction is already open at creation time of the panel
if (!Gui::Command::hasPendingCommand()) {
QString msg = QObject::tr("Constraint pressure");
QString msg = QObject::tr("Constraint normal stress");
Gui::Command::openCommand((const char*)msg.toUtf8());
ConstraintView->setVisible(true);
Gui::Command::doCommand(Gui::Command::Doc,ViewProviderFemConstraint::gethideMeshShowPartStr((static_cast<Fem::Constraint*>(ConstraintView->getObject()))->getNameInDocument()).c_str()); //OvG: Hide meshes and show parts
}
}

Expand Down
11 changes: 0 additions & 11 deletions src/Mod/Fem/Gui/TaskFemConstraintPulley.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -188,17 +188,6 @@ TaskDlgFemConstraintPulley::TaskDlgFemConstraintPulley(ViewProviderFemConstraint

//==== calls from the TaskView ===============================================================

void TaskDlgFemConstraintPulley::open()
{
// a transaction is already open at creation time of the panel
if (!Gui::Command::hasPendingCommand()) {
QString msg = QObject::tr("Constraint pulley");
Gui::Command::openCommand((const char*)msg.toUtf8());
ConstraintView->setVisible(true);
Gui::Command::doCommand(Gui::Command::Doc,ViewProviderFemConstraint::gethideMeshShowPartStr((static_cast<Fem::Constraint*>(ConstraintView->getObject()))->getNameInDocument()).c_str()); //OvG: Hide meshes and show parts
}
}

bool TaskDlgFemConstraintPulley::accept()
{
std::string name = ConstraintView->getObject()->getNameInDocument();
Expand Down
2 changes: 1 addition & 1 deletion src/Mod/Fem/Gui/TaskFemConstraintPulley.h
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ class TaskDlgFemConstraintPulley : public TaskDlgFemConstraintGear

/// is called by the framework if the dialog is accepted (Ok)
virtual bool accept();
void open();

};

} //namespace FemGui
Expand Down
20 changes: 0 additions & 20 deletions src/Mod/Fem/Gui/ViewProviderFemConstraint.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -168,28 +168,8 @@ void ViewProviderFemConstraint::onChanged(const App::Property* prop)
}
}

//OvG: Visibility automation show parts and hide meshes on activation of a constraint
std::string ViewProviderFemConstraint::gethideMeshShowPartStr(const std::string showConstr)
{
return "for amesh in App.activeDocument().Objects:\n\
if \""+showConstr+"\" == amesh.Name:\n\
amesh.ViewObject.Visibility = True\n\
elif \"Mesh\" in amesh.TypeId:\n\
aparttoshow = amesh.Name.replace(\"_Mesh\",\"\")\n\
for apart in App.activeDocument().Objects:\n\
if aparttoshow == apart.Name:\n\
apart.ViewObject.Visibility = True\n\
amesh.ViewObject.Visibility = False\n";
}

std::string ViewProviderFemConstraint::gethideMeshShowPartStr()
{
return ViewProviderFemConstraint::gethideMeshShowPartStr("");
}

bool ViewProviderFemConstraint::setEdit(int ModNum)
{
Gui::Command::doCommand(Gui::Command::Doc,"%s",ViewProviderFemConstraint::gethideMeshShowPartStr().c_str());
return Gui::ViewProviderGeometryObject::setEdit(ModNum);
}

Expand Down
3 changes: 0 additions & 3 deletions src/Mod/Fem/Gui/ViewProviderFemConstraint.h
Original file line number Diff line number Diff line change
Expand Up @@ -64,9 +64,6 @@ class FemGuiExport ViewProviderFemConstraint : public Gui::ViewProviderGeometryO

std::vector<App::DocumentObject*> claimChildren(void)const;
void setupContextMenu(QMenu*, QObject*, const char*);

static std::string gethideMeshShowPartStr();
static std::string gethideMeshShowPartStr(const std::string showConstr);

protected:
void onChanged(const App::Property* prop);
Expand Down

0 comments on commit 577f208

Please sign in to comment.