FEM: Fix linking errors

The static members of FemSetElementNodesObject are not defined in Fem but FemGui which the MSVC compiler doesn't like.
Furthermore it's a code smell to make them public and static and they are not even used by the class itself.
This commit is contained in:
wmayer
2024-06-18 18:14:10 +02:00
parent b8905ff87e
commit a2939767ce
3 changed files with 11 additions and 13 deletions

View File

@@ -53,8 +53,10 @@ public:
}
short mustExecute() const override;
PyObject* getPyObject() override;
static std::string elementsName; // = "ElementsSet";
static std::string uniqueElementsName; // "ElementsSet" latest name
static std::string getElementName()
{
return "ElementsSet";
}
};
} // namespace Fem

View File

@@ -1247,8 +1247,6 @@ bool CmdFemCreateNodesSet::isActive()
//===========================================================================
// start of Erase Elements code
//===========================================================================
std::string Fem::FemSetElementNodesObject::elementsName;
std::string Fem::FemSetElementNodesObject::uniqueElementsName;
DEF_STD_CMD_A(CmdFemDefineElementsSet);
@@ -1418,21 +1416,18 @@ void CmdFemCreateElementsSet::activated(int)
Fem::FemMeshObject* MeshObj =
static_cast<Fem::FemMeshObject*>(FemMeshFilter.Result[0][0].getObject());
Fem::FemSetElementNodesObject::elementsName = "ElementsSet";
Fem::FemSetElementNodesObject::uniqueElementsName =
Command::getUniqueObjectName(Fem::FemSetElementNodesObject::elementsName.c_str());
std::string elementsName = Fem::FemSetElementNodesObject::getElementName();
std::string uniqueElementsName = Command::getUniqueObjectName(elementsName.c_str());
openCommand(QT_TRANSLATE_NOOP("Command", "Create Elements set"));
doCommand(Doc,
"App.activeDocument().addObject('Fem::FemSetElementNodesObject','%s')",
Fem::FemSetElementNodesObject::uniqueElementsName.c_str());
uniqueElementsName.c_str());
doCommand(Gui,
"App.activeDocument().%s.FemMesh = App.activeDocument().%s",
Fem::FemSetElementNodesObject::uniqueElementsName.c_str(),
uniqueElementsName.c_str(),
MeshObj->getNameInDocument());
doCommand(Gui,
"Gui.activeDocument().setEdit('%s')",
Fem::FemSetElementNodesObject::uniqueElementsName.c_str());
doCommand(Gui, "Gui.activeDocument().setEdit('%s')", uniqueElementsName.c_str());
}
else {
QMessageBox::warning(

View File

@@ -541,7 +541,8 @@ void TaskCreateElementSet::Restore(void)
objectN.c_str());
Gui::Command::doCommand(Gui::Command::Doc, "App.ActiveDocument.recompute()");
}
else if (objectN.find(Fem::FemSetElementNodesObject::elementsName) != std::string::npos) {
else if (objectN.find(Fem::FemSetElementNodesObject::getElementName())
!= std::string::npos) {
if (elList > 0) {
Gui::Command::doCommand(Gui::Command::Doc,
"App.ActiveDocument.removeObject(\'%s\')",