From f869e15ee20e898f07a0de08cb2f1aed03a558f1 Mon Sep 17 00:00:00 2001 From: Bernd Hahnebach Date: Fri, 2 Mar 2018 17:57:03 +0100 Subject: [PATCH] FEM: mesh view provider, fix for shell beam 3D output, because node numbering does not start with 1 --- src/Mod/Fem/Gui/ViewProviderFemMesh.cpp | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/src/Mod/Fem/Gui/ViewProviderFemMesh.cpp b/src/Mod/Fem/Gui/ViewProviderFemMesh.cpp index 78442bc604..782c3eef43 100644 --- a/src/Mod/Fem/Gui/ViewProviderFemMesh.cpp +++ b/src/Mod/Fem/Gui/ViewProviderFemMesh.cpp @@ -507,12 +507,11 @@ PyObject * ViewProviderFemMesh::getPyObject() void ViewProviderFemMesh::setColorByNodeId(const std::map &NodeColorMap) { - long startId = NodeColorMap.begin()->first; long endId = (--NodeColorMap.end())->first; - std::vector colorVec(endId-startId+2,App::Color(0,1,0)); + std::vector colorVec(endId+1,App::Color(0,1,0)); for(std::map::const_iterator it=NodeColorMap.begin();it!=NodeColorMap.end();++it) - colorVec[it->first-startId] = it->second; + colorVec[it->first] = it->second; setColorByNodeIdHelper(colorVec); @@ -520,14 +519,12 @@ void ViewProviderFemMesh::setColorByNodeId(const std::map &Node void ViewProviderFemMesh::setColorByNodeId(const std::vector &NodeIds,const std::vector &NodeColors) { - long startId = *(std::min_element(NodeIds.begin(), NodeIds.end())); - long endId = *(std::max_element(NodeIds.begin(), NodeIds.end())); + long endId = *(std::max_element(NodeIds.begin(), NodeIds.end())); - std::vector colorVec(endId-startId+2,App::Color(0,1,0)); + std::vector colorVec(endId+1,App::Color(0,1,0)); long i=0; for(std::vector::const_iterator it=NodeIds.begin();it!=NodeIds.end();++it,i++) - colorVec[*it-startId] = NodeColors[i]; - + colorVec[*it] = NodeColors[i]; setColorByNodeIdHelper(colorVec); @@ -545,8 +542,7 @@ void ViewProviderFemMesh::setColorByNodeIdHelper(const std::vector & for(std::vector::const_iterator it=vNodeElementIdx.begin() ;it!=vNodeElementIdx.end() ;++it,i++) - colors[i] = SbColor(colorVec[*it-1].r,colorVec[*it-1].g,colorVec[*it-1].b); - + colors[i] = SbColor(colorVec[*it].r,colorVec[*it].g,colorVec[*it].b); pcShapeMaterial->diffuseColor.finishEditing(); }