Hi, David<br><br>Thank you very much for your reply. It is really helpful and fits my problem perfectly.<br><br>At the same time, I find another way, that is <br><br><b>    polys-&gt;InitTraversal();<br>    for(int i = 0; i &lt; polys-&gt;GetNumberOfCells(); i++)<br>
    {<br>        polys-&gt;GetNextCell(idList);<br>        int a = idList-&gt;GetId(0);<br>        int b = idList-&gt;GetId(1);<br>        int c = idList-&gt;GetId(2);<br>    }</b><br><br>However, I find this way doesn&#39;t work in the following code clip<br>
<b><br>    polys-&gt;InitTraversal();<br>    for(int i = 0; i &lt; polys-&gt;GetNumberOfCells(); i++)<br>    {<br>        polys-&gt;GetCell(i, idList);    // This method returns wrong ids<br>        int a = idList-&gt;GetId(0);<br>
        int b = idList-&gt;GetId(1);<br>        int c = idList-&gt;GetId(2);<br>    }</b><br><br>May I know why? And how to deal with it?<br><br>Thank you very much.<br><br>Best wishes<br>Wenlong<br><br><div class="gmail_quote">
2013/1/4 David Gobbi <span dir="ltr">&lt;<a href="mailto:david.gobbi@gmail.com" target="_blank">david.gobbi@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi Wenlong,<br>
<br>
My favorite way of getting polygons out of a vtkCellArray is with<br>
a loop like this:<br>
<br>
  vtkIdType numCells = cellArray-&gt;GetNumberOfCells();<br>
  vtkIdType cellLocation = 0; // the index into the cell array<br>
<br>
  for (vtkIdType i = 0; i &lt; numCells; i++)<br>
    {<br>
    vtkIdType numIds; // to hold the size of the cell<br>
    vtkIdType *pointIds; // to hold the ids in the cell<br>
<br>
    cellArray-&gt;GetCell(cellLocation, numIds, pointIds);<br>
    cellLocation += 1 + numIds;<br>
<br>
    ...<br>
  }<br>
<span class="HOEnZb"><font color="#888888"><br>
 - David<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
<br>
On Fri, Jan 4, 2013 at 2:44 PM, Wenlong Wang &lt;<a href="mailto:scc.wwl@gmail.com">scc.wwl@gmail.com</a>&gt; wrote:<br>
&gt; Hi, all<br>
&gt;<br>
&gt; I am looking into a 3D shape model. It has 5,000+ points, and 9,000+ cells.<br>
&gt; Thus in the .vtk file, I have the polygon data in the format such as follows<br>
&gt;<br>
&gt; POLYGONS 9637 38548<br>
&gt; 3 0 1 2<br>
&gt; 3 1 3 4<br>
&gt; 3 2 1 4<br>
&gt; 3 3 5 6<br>
&gt; 3 4 3 6<br>
&gt; 3 5 7 8<br>
&gt; .......<br>
&gt;<br>
&gt; The first number of each line indicates how many points are included in the<br>
&gt; cell, and the next 3 numbers indicate the point ids. In my case, the polygon<br>
&gt; is combined by triangles.<br>
&gt;<br>
&gt; I use vtkGenericDataObjectReader to open the .vtk file, and then use<br>
&gt; vtkPolyData::GetPolys to get the polygons of the shape model, whose type is<br>
&gt; vtkCellArray pointer.<br>
&gt;<br>
&gt; Here is my code clip:<br>
&gt;     vtkSmartPointer&lt;vtkGenericDataObjectReader&gt; reader =<br>
&gt; vtkSmartPointer&lt;vtkGenericDataObjectReader&gt;::New();<br>
&gt;     reader-&gt;SetFileName(&quot;C:\\meanshape.vtk&quot;);<br>
&gt;     reader-&gt;OpenVTKFile();<br>
&gt;     reader-&gt;Update();<br>
&gt;<br>
&gt;     vtkSmartPointer&lt;vtkPolyData&gt; shape =<br>
&gt; vtkSmartPointer&lt;vtkPolyData&gt;::New();<br>
&gt;     shape = reader-&gt;GetPolyDataOutput();<br>
&gt;<br>
&gt;     vtkSmartPointer&lt;vtkCellArray&gt; polys =<br>
&gt; vtkSmartPointer&lt;vtkCellArray&gt;::New();<br>
&gt;     polys = shape-&gt;GetPolys();<br>
&gt;<br>
&gt; My problem is: After I have polygon data in a vtkCellArray instance, how can<br>
&gt; I get access to the point ids in each triangle cell? For example, I want to<br>
&gt; read &quot;0 1 2&quot; in the first line, &quot;1 3 4&quot; in the second line, etc.<br>
&gt;<br>
&gt; Can you help me out of this? Many thanks in advance for your kind help.<br>
&gt;<br>
&gt; All bests<br>
&gt; Wenlong<br>
</div></div></blockquote></div><br>