From 6721cbb3a649ca7ae0cd561ed985a79574c1ad4a Mon Sep 17 00:00:00 2001 From: Bernd Hahnebach Date: Sat, 9 Apr 2016 18:42:09 +0100 Subject: [PATCH] FEM: Mesh ViewProvider, change painting and some comments of quad4 --- src/Mod/Fem/Gui/ViewProviderFemMesh.cpp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/Mod/Fem/Gui/ViewProviderFemMesh.cpp b/src/Mod/Fem/Gui/ViewProviderFemMesh.cpp index 1ac4834bc9..5705cf42ce 100644 --- a/src/Mod/Fem/Gui/ViewProviderFemMesh.cpp +++ b/src/Mod/Fem/Gui/ViewProviderFemMesh.cpp @@ -1136,31 +1136,38 @@ void ViewProviderFEMMeshBuilder::createMesh(const App::Property* prop, break; // 4 nodes case 4: + // quad4 face // tetra4 volume, four 3-node triangles Base::Console().Log(" %f: Start build up triangle vector for 4 nodes object\n",Base::TimeInfo::diffTimeF(Start,Base::TimeInfo())); Base::Console().Log(" NumNodes:%i\n",facesHelper[l].Element->NbNodes()); switch (facesHelper[l].FaceNo){ - case 0: { // quad4 face + case 0: { // quad4 face, 4-node quadrangle Base::Console().Log(" %f: Start build up triangle vector for quad4 face\n",Base::TimeInfo::diffTimeF(Start,Base::TimeInfo())); Base::Console().Log(" FaceNo:%i\n",facesHelper[l].FaceNo); + // prefeche all node indexes of this face int nIdx0 = mapNodeIndex[facesHelper[l].Element->GetNode(0)]; int nIdx1 = mapNodeIndex[facesHelper[l].Element->GetNode(1)]; int nIdx2 = mapNodeIndex[facesHelper[l].Element->GetNode(2)]; int nIdx3 = mapNodeIndex[facesHelper[l].Element->GetNode(3)]; - indices[index++] = nIdx2; + // create triangle number 1 ---------------------------------------------- + // fill in the node indexes in CLOCKWISE order indices[index++] = nIdx0; indices[index++] = nIdx1; + indices[index++] = nIdx2; indices[index++] = SO_END_FACE_INDEX; + // add the two edge segments for that triangle insEdgeVec(EdgeMap, nIdx0, nIdx1); insEdgeVec(EdgeMap, nIdx1, nIdx2); - vFaceElementIdx[indexIdx++] = ElemFold(facesHelper[l].ElementNumber, 0); + // rember the element and face number for that triangle + vFaceElementIdx[indexIdx++] = ElemFold(facesHelper[l].ElementNumber,0); + // create triangle number 2 ---------------------------------------------- + indices[index++] = nIdx2; indices[index++] = nIdx3; indices[index++] = nIdx0; - indices[index++] = nIdx2; indices[index++] = SO_END_FACE_INDEX; insEdgeVec(EdgeMap, nIdx2, nIdx3); insEdgeVec(EdgeMap, nIdx3, nIdx0); - vFaceElementIdx[indexIdx++] = ElemFold(facesHelper[l].ElementNumber, 0); + vFaceElementIdx[indexIdx++] = ElemFold(facesHelper[l].ElementNumber,0); break; } case 1: { // tetra4 volume: face 1, 3-node triangle Base::Console().Log(" %f: Start build up triangle vector for tetra4 --> face1\n",Base::TimeInfo::diffTimeF(Start,Base::TimeInfo()));