From 9a239261bb9b0c33db27666c6095dacc5eaf638d Mon Sep 17 00:00:00 2001 From: jriegel Date: Mon, 2 Dec 2013 20:35:12 +0100 Subject: [PATCH] fix in get visible faces --- src/Mod/Fem/Gui/ViewProviderFemMeshPyImp.cpp | 28 ++++++++++++++++---- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/src/Mod/Fem/Gui/ViewProviderFemMeshPyImp.cpp b/src/Mod/Fem/Gui/ViewProviderFemMeshPyImp.cpp index e19204b6c..8a18f6e06 100644 --- a/src/Mod/Fem/Gui/ViewProviderFemMeshPyImp.cpp +++ b/src/Mod/Fem/Gui/ViewProviderFemMeshPyImp.cpp @@ -103,14 +103,32 @@ void ViewProviderFemMeshPy::setHighlightedNodes(Py::List arg) Py::List ViewProviderFemMeshPy::getVisibleElementFaces(void) const { const std::vector & visElmFc = this->getViewProviderFemMeshPtr()->getVisibleElementFaces(); - Py::List result( visElmFc.size() ); + std::vector trans; + // sorting out double faces through higer order elements and null entries + long elementOld =0, faceOld=0; + for (std::vector::const_iterator it = visElmFc.begin();it!=visElmFc.end();++it){ + if(*it == 0) + continue; + + long element = *it>>3; + long face = (*it&7)+1; + if(element == elementOld && face==faceOld) + continue; + + trans.push_back(*it); + elementOld = element; + faceOld = face; + } + + Py::List result( trans.size() ); int i = 0; - for (std::vector::const_iterator it = visElmFc.begin();it!=visElmFc.end();++it,i++){ + for (std::vector::const_iterator it = trans.begin();it!=trans.end();++it,i++){ Py::Tuple tup(2); - - tup.setItem( 0,Py::Int((long)*it>>3) ); - tup.setItem( 1,Py::Int((long)(*it&7)+1) ); + long element = *it>>3; + long face = (*it&7)+1; + tup.setItem( 0,Py::Int( element ) ); + tup.setItem( 1,Py::Int( face ) ); result.setItem(i,tup); }