<div dir="ltr"><div>Hi Richard,</div><div><br></div><div>I've put my code up on gitlab, three classes in total:</div><a href="https://gitlab.kitware.com/vtk/vtk/merge_requests/1118">https://gitlab.kitware.com/vtk/vtk/merge_requests/1118</a><br><div><br></div><div>Two of these classes are iterators, meaning that they allow you to</div><div>write your own loop.  The third class is a filter that extracts all of</div><div>the point data that lies within the stencil.  Here are some examples</div><div>(the examples are python, C++ code would be similar):</div><div><br></div><div># Example for iterating over all point Ids in an image</div><div><div>iter = vtkImagePointDataIterator(image, image.GetExtent(), stencil)</div><div>scalars = image.GetPointData().GetScalars()</div><div>while (not iter.IsAtEnd()):</div><div>    # loop over a contiguous span of Ids</div><div>    for i in range(iter.GetId(), iter.GetId() + iter.GetSpanSize()):</div><div>        value = scalars.GetTuple(i)</div><div>    # advance to the next span</div><div>    iter.NextSpan()</div></div><div><br></div><div># Example for iterating over all points in an image</div><div><div>iter = vtkImagePointIterator(image, image.GetExtent(), stencil)</div><div>scalars = image.GetPointData().GetScalars()</div><div>while (not iter.IsAtEnd()):</div><div>    point = iter.GetPosition()</div><div>    idx = iter.GetIndex()</div><div>    value = scalars.GetTuple(iter.GetId())</div><div>    iter.Next()</div></div><div><br></div><div># Example for using the vtkImageToPoints filter</div><div>filter = vtkImageToPoints()</div><div>filter.SetInputConnection(reader.GetOutputPort())</div><div>filter.SetStencilConnection(polyToStencil.GetOutputPort())</div><div>filter.Update()</div><div># Get a polydata object with points and attributes</div><div>polyData = filter.GetOutput()</div><div>points = polyData.GetPoints()</div><div>scalars = polyData.GetPointData().GetScalars()</div><div><br></div><div>I'm not sure if these were quite what you were looking for, I was</div><div>aiming to create general-purpose classes.</div><div><br></div><div>Cheers,</div><div> - David</div><div><br></div><div><br></div><div><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jan 20, 2016 at 9:31 AM, David Gobbi <span dir="ltr"><<a href="mailto:david.gobbi@gmail.com" target="_blank">david.gobbi@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr">Proposed patches for VTK are at this page:<div><a href="https://gitlab.kitware.com/vtk/vtk/merge_requests" target="_blank">https://gitlab.kitware.com/vtk/vtk/merge_requests</a><br></div><div>And a log of accepted patches is at this page:</div><div><a href="https://gitlab.kitware.com/groups/vtk" target="_blank">https://gitlab.kitware.com/groups/vtk</a><br></div><div><br></div><div>When my patch is ready, I'll send you a link.</div><span class=""><font color="#888888"><div><br></div><div> - David</div><div><br></div></font></span></div><div class=""><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jan 20, 2016 at 9:10 AM, Richard Brown <span dir="ltr"><<a href="mailto:richard.j.brown@live.co.uk" target="_blank">richard.j.brown@live.co.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word">Great thanks David.<div><br></div><div>Silly question, but where is gitlab?</div><div><br></div><div>Regards,</div><div>Richard</div><div><div><div><br><div><blockquote type="cite"><div>On 19 Jan 2016, at 23:09, David Gobbi <<a href="mailto:david.gobbi@gmail.com" target="_blank">david.gobbi@gmail.com</a>> wrote:</div><br><div><div dir="ltr"><div>Hi Rich,</div><div><br></div><div>The quick answer is no, there are no classes in VTK to do this.</div><div><br></div><div>However, I have a class of my own called vtkImageExtractVoxels that</div><div>almost does what you need: it creates a vtkDataArray that contains the</div><div>the values of all of the voxels in the stencil.  It would be trivial to modify</div><div>this class so it so that it gives all the IDs.</div><div><br></div><div>Coincidentally, just 5 minutes before I saw your email, I started editing</div><div>this class because I need it to give the (x,y,z) of all in-stencil voxels.</div><div>So I'll get it to produce the IDs as well, and then put it on gitlab if you</div><div>want to try it out.</div><div><br></div><div> - David</div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jan 19, 2016 at 2:59 PM, mbcx9rb9 <span dir="ltr"><<a href="mailto:richard.j.brown@live.co.uk" target="_blank">richard.j.brown@live.co.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Hi all,<br>
<br>
Is there any way to get a list containing the IDs of all voxels within a<br>
vtkImageStencilData?<br>
<br>
My method at the moment for getting all the voxels in the stencil is to<br>
create a vtkOBBTree and check if the centre of each voxel is inside the<br>
vtkPolyData related to the stencil, but this is very slow.<br>
<br>
Thanks in advance for any pointers,<br>
Rich<br></blockquote></div></div></div>
</div></blockquote></div><br></div></div></div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div></div>