Salome HOME
PAL13460 (PAL EDF 301 force the mesh to go through a point)
authoreap <eap@opencascade.com>
Wed, 28 Feb 2007 15:00:19 +0000 (15:00 +0000)
committereap <eap@opencascade.com>
Wed, 28 Feb 2007 15:00:19 +0000 (15:00 +0000)
   get only unique nodes of SMDS_PolyhedralVolumeOfNodes

src/DriverUNV/DriverUNV_W_SMDS_Mesh.cxx

index b9554e306cd250331eda6df1dded300155f2d784..cf05c196216fcd9497462dffe326a04f26b92234 100644 (file)
 #include "DriverUNV_W_SMDS_Mesh.h"
 
 #include "SMDS_Mesh.hxx"
-#include "SMESHDS_GroupBase.hxx"
-//#include "SMESH_Group.hxx"
 #include "SMDS_QuadraticEdge.hxx"
 #include "SMDS_QuadraticFaceOfNodes.hxx"
+#include "SMDS_PolyhedralVolumeOfNodes.hxx"
+#include "SMESHDS_GroupBase.hxx"
 
 #include "utilities.h"
 
@@ -158,9 +158,16 @@ Driver_Mesh::Status DriverUNV_W_SMDS_Mesh::Perform()
          TElementLab aLabel = anElem->GetID();
 
          int aNbNodes = anElem->NbNodes();
-         aConnect.resize(aNbNodes);
-
          SMDS_ElemIteratorPtr aNodesIter = anElem->nodesIterator();
+          if ( anElem->IsPoly() ) {
+            if ( const SMDS_PolyhedralVolumeOfNodes* ph =
+                 dynamic_cast<const SMDS_PolyhedralVolumeOfNodes*> (anElem))
+            {
+              aNbNodes = ph->NbUniqueNodes();
+              aNodesIter = ph->uniqueNodesIterator();
+            }
+          }
+         aConnect.resize(aNbNodes);
          GetConnect(aNodesIter,aConnect);
 
          int anId = -1;