<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">Hi Andrew and Dan,<div><br></div><div>Thanks very much for your help and the useful Python script.</div><div><br></div><div>I have now fixed the problem, it was related to a bug in the way I generate my vtkPolyData objects from my input data. </div><div><br></div><div>For future reference, my input data consists of a set of closed loops consisting of 3D points, stored in a vector<vector<double>>.</div><div>I now successfully convert this to vtkPolyData using the following two functions:</div><div><br></div><div><div>vtkSmartPointer<vtkPolyData> convertContourToPolyData(vector<double> c) {</div><div>  auto points = vtkSmartPointer<vtkPoints>::New();</div><div>  for (auto i = 0; i < c.size(); i += 3) {</div><div>    auto id = points->InsertNextPoint(c[i], c[i + 1], c[i + 2]);</div><div>  }</div><div><br></div><div>  auto poly_line = vtkSmartPointer<vtkPolyLine>::New();</div><div>  poly_line->GetPointIds()->SetNumberOfIds(points->GetNumberOfPoints());</div><div>  for (auto i = 0; i < points->GetNumberOfPoints(); i++) {</div><div>    poly_line->GetPointIds()->SetId(i, i);</div><div>  }</div><div><br></div><div>  auto cells = vtkSmartPointer<vtkCellArray>::New();</div><div>  cells->InsertNextCell(poly_line);</div><div><br></div><div>  auto poly_data = vtkSmartPointer<vtkPolyData>::New();</div><div>  poly_data->SetPoints(points);</div><div>  poly_data->SetLines(cells);</div><div><br></div><div>  return poly_data;</div><div>}</div></div><div><br></div><div><div>vtkSmartPointer<vtkPolyData> convertContoursToPolyData(vector<vector<double>> contours) {</div><div>  auto append_filter = vtkSmartPointer<vtkAppendPolyData>::New();</div><div><br></div><div>  for (auto c : contours) {</div><div>    append_filter->AddInputData(convertContourToPolyData(c));</div><div>  }</div><div>  append_filter->Update();</div><div><br></div><div>  return append_filter->GetOutput();</div></div><div>}</div><div><br></div><div>Kind regards,</div><div><br></div><div>Dave</div><div><br><div><div>On 26 May 2016, at 03:12, Andrew Maclean <<a href="mailto:andrew.amaclean@gmail.com">andrew.amaclean@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div dir="ltr"><div>Hi David and Dan,</div><div><br></div>I had a little look at the data using Dan's python script.<div><br></div><div>Line 29 needs to be changed from:</div><div>points.InsertPoint(currentPointId, d.GetPoint(pointIds[i]))</div><div>to:</div><div>points.InsertPoint(currentPointId, d.GetPoint(i))<br></div><div><br></div><div>When this is done, out.vtp has the points that are not associated with the cells in the original data in it.</div><div><br></div><div>Now, if you change line 28 to:</div><div>if pointIds[i] == 1 and i > 0:<br></div><div>This will select all points associated with the cells. The extra i > 0 condition is needed as point 0 in cell 0 lies way outside the boundary of all the other points for some reason, yet is associated with a cell. This one point has a value of: (0, 3.6e19, -5.2e27), whilst the dimensions of the polygonal mesh are:<br></div><div>X-range: -195 to 193 (delta: 389)</div><div>Y-range: -45.2 to 242 (delta: 287)</div><div>Z-range: -583 to 362 (delta: 945)</div><div><br></div><div>This is a nice little script Dan for filtering out points not associated with cells, I'll add it to my list of useful scripts, thanks.</div><div><br></div><div><br></div><div>Regards</div><div>   Andrew</div><div><br><div class="gmail_extra"><br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><br><br>---------- Forwarded message ----------<br>From: David Edmunds <<a href="mailto:David.Edmunds@icr.ac.uk">David.Edmunds@icr.ac.uk</a>><br>To: Dan Lipsa <<a href="mailto:dan.lipsa@kitware.com">dan.lipsa@kitware.com</a>><br>Cc: "<a href="mailto:vtkusers@vtk.org">vtkusers@vtk.org</a>" <<a href="mailto:vtkusers@vtk.org">vtkusers@vtk.org</a>>, David Edmunds <<a href="mailto:David.Edmunds@icr.ac.uk">David.Edmunds@icr.ac.uk</a>><br>Date: Wed, 25 May 2016 14:51:14 +0100<br>Subject: Re: [vtkusers] Traversing vtkPolyData returns incorrect number of points<br><div style="word-wrap:break-word">Hi,<div><br></div><div>Sorry for the late reply but I couldn’t send attachments to the mailing list. My input file can be found at <a href="http://www.filedropper.com/organbody" target="_blank">http://www.filedropper.com/organbody</a>.</div><div><br></div><div>Kind regards,</div><div><br></div><div>Dave</div><div><br><div><div>On 23 May 2016, at 18:20, Dan Lipsa <<a href="mailto:dan.lipsa@kitware.com" target="_blank">dan.lipsa@kitware.com</a>> wrote:</div><br><blockquote type="cite"><div dir="ltr">I see,<div>Well, in this case, you may have points that are not part of any cells. Can you share your data file?</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, May 23, 2016 at 12:16 PM, David Edmunds <span dir="ltr"><<a href="mailto:David.Edmunds@icr.ac.uk" target="_blank">David.Edmunds@icr.ac.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word">Hi Dan,<div><br></div><div>Thanks, but I actually get a much smaller number when I count all the points from cells. Also, in my input dataset the cells are disjoint, i.e. no points are shared between multiple cells.</div><div><br></div><div>Kind regards,</div><div><br></div><div>Dave</div><div><div><br></div><div><div><div>On 23 May 2016, at 16:51, Dan Lipsa <<a href="mailto:dan.lipsa@kitware.com" target="_blank">dan.lipsa@kitware.com</a>> wrote:</div><br><blockquote type="cite"><div dir="ltr">Hi David,<div>You have shared points between cells so it is normal you'll get a bigger number when you count all the points from cells.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, May 23, 2016 at 10:01 AM, David Edmunds <span dir="ltr"><<a href="mailto:David.Edmunds@icr.ac.uk" target="_blank">David.Edmunds@icr.ac.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">Dear all,<br>
<br>
I am traversing a vtkPolyData object which is read in from a file using vtkXMLPolyDataReader. I access the number of points in the vtkPolyData in two different ways, here is my source code:<br>
<br>
  vtkSmartPointer<vtkXMLPolyDataReader> reader = vtkSmartPointer<vtkXMLPolyDataReader>::New();<br>
  reader->SetFileName("/Users/dedmunds/Desktop/organ_Body.vtp");<br>
  reader->Update();<br>
  vtkSmartPointer<vtkPolyData> poly_data = reader->GetOutput();<br>
<br>
  cout << "Number of points: " << poly_data->GetNumberOfPoints() << endl;<br>
<br>
  int traversal_points = 0;<br>
  for (int i=0; i<poly_data->GetNumberOfCells(); i++) {<br>
    traversal_points += poly_data->GetCell(i)->GetNumberOfPoints();<br>
  }<br>
  cout << "Traversal number of points: " << traversal_points << endl;<br>
<br>
Here is the output:<br>
<br>
Number of points: 286402<br>
Traversal number of points: 143204<br>
<br>
Why do I get two different answers? The second number is approximately half the first. What am I doing wrong?<br>
<br>
Thanks for your help,<br>
<br>
Kind regards,<br>
<br>
Dave<br>
<br>
The Institute of Cancer Research: Royal Cancer Hospital, a charitable Company Limited by Guarantee, Registered in England under Company No. 534147 with its Registered Office at 123 Old Brompton Road, London SW7 3RP.<br>
<br>
This e-mail message is confidential and for use by the addressee only.  If the message is received by anyone other than the addressee, please return the message to the sender by replying to it and then delete the message from your computer and network.<br>
_______________________________________________<br>
Powered by <a href="http://www.kitware.com/" rel="noreferrer" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" rel="noreferrer" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Please keep messages on-topic and check the VTK FAQ at: <a href="http://www.vtk.org/Wiki/VTK_FAQ" rel="noreferrer" target="_blank">http://www.vtk.org/Wiki/VTK_FAQ</a><br>
<br>
Search the list archives at: <a href="http://markmail.org/search/?q=vtkusers" rel="noreferrer" target="_blank">http://markmail.org/search/?q=vtkusers</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://public.kitware.com/mailman/listinfo/vtkusers" rel="noreferrer" target="_blank">http://public.kitware.com/mailman/listinfo/vtkusers</a><br>
</blockquote></div><br></div>
</blockquote></div><br></div><br clear="both">
The Institute of Cancer Research: Royal Cancer Hospital, a charitable Company Limited by Guarantee, Registered in England under Company No. 534147 with its Registered Office at 123 Old Brompton Road, London SW7 3RP.<br>
<br>
This e-mail message is confidential and for use by the addressee only.  If the message is received by anyone other than the addressee, please return the message to the sender by replying to it and then delete the message from your computer and network.<br>
</div></div></blockquote></div><br></div>
</blockquote></div><br></div><br clear="both">
The Institute of Cancer Research: Royal Cancer Hospital, a charitable Company Limited by Guarantee, Registered in England under Company No. 534147 with its Registered Office at 123 Old Brompton Road, London SW7 3RP.<br>
<br>
This e-mail message is confidential and for use by the addressee only.  If the message is received by anyone other than the addressee, please return the message to the sender by replying to it and then delete the message from your computer and network.<br>
</div><br><br></blockquote></div>-- <br><div class="gmail_signature">___________________________________________<br>Andrew J. P. Maclean<br><br>___________________________________________</div>
</div></div></div>
</blockquote></div><br></div><br clear="both">
The Institute of Cancer Research: Royal Cancer Hospital, a charitable Company Limited by Guarantee, Registered in England under Company No. 534147 with its Registered Office at 123 Old Brompton Road, London SW7 3RP.<BR>
<BR>
This e-mail message is confidential and for use by the addressee only.  If the message is received by anyone other than the addressee, please return the message to the sender by replying to it and then delete the message from your computer and network.<BR>
</body></html>