diff --git a/src/Mod/Fem/Gui/ViewProviderFemMesh.cpp b/src/Mod/Fem/Gui/ViewProviderFemMesh.cpp index 26839b784..c66104dd5 100755 --- a/src/Mod/Fem/Gui/ViewProviderFemMesh.cpp +++ b/src/Mod/Fem/Gui/ViewProviderFemMesh.cpp @@ -467,8 +467,7 @@ std::vector ViewProviderFemMesh::getSelectionShape(const char* E void ViewProviderFemMesh::setHighlightNodes(const std::set& HighlightedNodes) { - - if(HighlightedNodes.size()){ + if(!HighlightedNodes.empty()){ SMESHDS_Mesh* data = const_cast((dynamic_cast(this->pcObject)->FemMesh).getValue().getSMesh())->GetMeshDS(); pcAnoCoords->point.setNum(HighlightedNodes.size()); @@ -476,14 +475,15 @@ void ViewProviderFemMesh::setHighlightNodes(const std::set& HighlightedNod int i=0; for(std::set::const_iterator it=HighlightedNodes.begin();it!=HighlightedNodes.end();++it,i++){ const SMDS_MeshNode *Node = data->FindNode(*it); - verts[i].setValue((float)Node->X(),(float)Node->Y(),(float)Node->Z()); + if (Node) + verts[i].setValue((float)Node->X(),(float)Node->Y(),(float)Node->Z()); + else + verts[i].setValue(0,0,0); } pcAnoCoords->point.finishEditing(); - }else{ pcAnoCoords->point.setNum(0); } - } void ViewProviderFemMesh::resetHighlightNodes(void) { diff --git a/src/Mod/Fem/Gui/ViewProviderFemMeshPyImp.cpp b/src/Mod/Fem/Gui/ViewProviderFemMeshPyImp.cpp index 698dcfbeb..244564466 100644 --- a/src/Mod/Fem/Gui/ViewProviderFemMeshPyImp.cpp +++ b/src/Mod/Fem/Gui/ViewProviderFemMeshPyImp.cpp @@ -6,8 +6,13 @@ #include -#include "Mod/Fem/Gui/ViewProviderFemMesh.h" -#include "Mod/Fem/App/FemResultObject.h" +#include +#include +#include +#include +#include +#include +#include // inclusion of the generated files (generated out of ViewProviderFemMeshPy.xml) #include "ViewProviderFemMeshPy.h" @@ -218,13 +223,18 @@ Py::List ViewProviderFemMeshPy::getHighlightedNodes(void) const void ViewProviderFemMeshPy::setHighlightedNodes(Py::List arg) { - std::set res; + ViewProviderFemMesh* vp = this->getViewProviderFemMeshPtr(); + SMESHDS_Mesh* data = const_cast((dynamic_cast + (vp->getObject())->FemMesh).getValue().getSMesh())->GetMeshDS(); - for( Py::List::iterator it = arg.begin(); it!= arg.end();++it){ - Py::Int id(*it); - if(id) + std::set res; + for(Py::List::iterator it = arg.begin(); it!= arg.end();++it){ + long id = static_cast(Py::Int(*it)); + const SMDS_MeshNode *node = data->FindNode(id); + if(node) res.insert(id); } + this->getViewProviderFemMeshPtr()->setHighlightNodes(res); }