# Retreive triangle from Flying edges mesh

**URL:** <https://discourse.slicer.org/t/retreive-triangle-from-flying-edges-mesh/13773>\
**Category:** Development\
**Created:** [September 30, 2020, 12:54pm UTC](https://discourse.slicer.org/t/retreive-triangle-from-flying-edges-mesh/13773 "2020-09-30T12:54:04Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Nina](https://avatars.discourse-cdn.com/v4/letter/n/e68b1a/32.png) [@Nina](https://discourse.slicer.org/u/Nina)\
**Post date:** [September 30, 2020, 12:54pm UTC](https://discourse.slicer.org/t/retreive-triangle-from-flying-edges-mesh/13773/1 "2020-09-30T12:54:04Z")

</div>

Hi;

I have closed surface generated from segmentation using Flying edges. I want retreive triangle and points from each cell

here is my code:

for(int i = 0; i \< FEMesh-\>GetNumberOfCells(); i++)  
{  
vtkSmartPointer cell = FEMesh-\>GetCell(i);  
vtkSmartPointer triangle = vtkTriangle::SafeDownCast(cell);  
double p0[3];  
double p1[3];  
double p2[3];  
triangle-\>GetPoints()-\>GetPoint(0, p0);  
triangle-\>GetPoints()-\>GetPoint(1, p1);  
triangle-\>GetPoints()-\>GetPoint(2, p2);

```
   triangle_points->InsertNextPoint(p0[0], p0[1], p0[2]);
   triangle_points->InsertNextPoint(p1[0], p1[1], p1[2]);
   triangle_points->InsertNextPoint(p2[0], p2[1], p2[2]);
   
   triangles->InsertNextCell(triangle);

```

}

in order to check if all triangle and points are well recovered, I stored points and triangles in vtkPolydata (the mesh is deformed, I want keep the initial form how can I obtain this). see attached figure of deformed mesh

Polydata-\>SetPoints(triangle\_points);  
Polydata-\>SetPolys(triangles);

 ![mesh](https://us1.discourse-cdn.com/flex002/uploads/slicer/original/3X/6/b/6b38a2f90ee90c3b58abd39b0959eb4e77ebf8b8.png)

Thank’s in advance

---

<div class="post-metadata">

**Author:** ![Nina](https://avatars.discourse-cdn.com/v4/letter/n/e68b1a/32.png) [@Nina](https://discourse.slicer.org/u/Nina)\
**Post date:** [September 30, 2020, 2:37pm UTC](https://discourse.slicer.org/t/retreive-triangle-from-flying-edges-mesh/13773/2 "2020-09-30T14:37:21Z")

</div>

I found my bug!

here is solution:

FEMesh-\>GetPolys()-\>InitTraversal();  
vtkSmartPointer idList = vtkSmartPointer::New();  
while( FEMesh-\>GetPolys()-\>GetNextCell(idList))  
{  
for(vtkIdType pointId = 0; pointId \< idList-\>GetNumberOfIds(); pointId++){  
FEMesh-\>GetPoint(idList-\>GetId(pointId), pt);  
triangle\_points-\>InsertNextPoint(pt[0], pt[1], pt[2]);

```
}
}

// Insert all cells (triangles)
 for (int i = 0 ; i < triangle_points->GetNumberOfPoints() ; i += 3) {

     const vtkIdType cellPoints[] = {i, i + 1, i + 2};
     triangles->InsertNextCell(3, cellPoints);
 }

Polydata->SetPoints(triangle_points);
Polydata->SetPolys(triangles);

```

thank’s!
