From abbf577ef8f9761e05b222283168555ee3013498 Mon Sep 17 00:00:00 2001 From: eap Date: Wed, 21 Feb 2007 16:55:17 +0000 Subject: [PATCH] PAL13460 (PAL EDF 301 force the mesh to go through a point) get only unique nodes of SMDS_PolyhedralVolumeOfNodes --- src/OBJECT/SMESH_Object.cxx | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/OBJECT/SMESH_Object.cxx b/src/OBJECT/SMESH_Object.cxx index 1e52ccb01..e7637a2f8 100644 --- a/src/OBJECT/SMESH_Object.cxx +++ b/src/OBJECT/SMESH_Object.cxx @@ -29,6 +29,7 @@ #include "SMESH_ActorUtils.h" #include "SMDS_Mesh.hxx" +#include "SMDS_PolyhedralVolumeOfNodes.hxx" #include "SMESH_Actor.h" #include "SMESH_ControlsDef.hxx" #include "SalomeApp_Application.h" @@ -346,14 +347,19 @@ void SMESH_VisualObjDef::buildElemPrs() switch(aType){ case SMDSAbs_Volume:{ std::vector aConnectivities; - GetConnect(aNodesIter,aConnect); // Convertions connectivities from SMDS to VTK if (anElem->IsPoly() && aNbNodes > 3) { // POLYEDRE - for (int k = 0; k < aNbNodes; k++) { - aConnectivities.push_back(k); - } - } else if (aNbNodes == 4) { + if ( const SMDS_PolyhedralVolumeOfNodes* ph = + dynamic_cast (anElem)) + { + aNbNodes = GetConnect(ph->uniqueNodesIterator(),aConnect); + anIdList->SetNumberOfIds( aNbNodes ); + } + for (int k = 0; k < aNbNodes; k++) + aConnectivities.push_back(k); + + } else if (aNbNodes == 4) { static int anIds[] = {0,2,1,3}; for (int k = 0; k < aNbNodes; k++) aConnectivities.push_back(anIds[k]); @@ -395,6 +401,9 @@ void SMESH_VisualObjDef::buildElemPrs() else { } + if ( aConnect.empty() ) + GetConnect(aNodesIter,aConnect); + if (aConnectivities.size() > 0) { for (vtkIdType aNodeId = 0; aNodeId < aNbNodes; aNodeId++) SetId(anIdList,mySMDS2VTKNodes,aConnect,aNodeId,aConnectivities[aNodeId]);