<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Dear David,<div class=""><br class=""></div><div class="">Thanks for getting in touch. I think this was a good starting point but still not entirely sure that it’s what I need. I created N slices of simple 2D squares, equally spaced on the Z axis - the it was like a stack of contours. But when I add the polygons and points to the vtkPolyData and then render using vtkPolyDataMapper it is one image, but the square slices are connected in some way… (please see the image attached). Realistically the slices are not attached, they are contours drawn on individual z-positions.</div><div class=""><br class=""></div><div class="">Ultimately I want to visualise DICOM images (transverse plane, effectively slice-by-slice) and on each individual slice I would want to overlay a contour/polygon which defines different organ regions. I would also want to be able to check if a voxel (from the dicom image) lies within the bounds of the polygon.</div><div class=""><br class=""></div><div class="">Would the approach of creating N independent vtkPolygon objects and then adding each on to a vtkCellArray be along the correct lines for doing this do you think?</div><div class=""><br class=""></div><div class="">Regards, Nick.</div><div class=""><br class=""></div><div class=""><img apple-inline="yes" id="F4931F17-D3D1-4C13-8107-19A95A18C89B" height="319" width="301" apple-width="yes" apple-height="yes" src="cid:0E1E7850-6348-45CC-B981-73321471DE66@home" class=""></div><div class=""><br class=""></div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On 29 Oct 2014, at 12:56, David Cole <<a href="mailto:dlrdave@aol.com" class="">dlrdave@aol.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><div class="">You should be able to put all of the points and all of the polygons into your existing "points" and "polygons" variables, and have just one polydata that refers to all of them at once.</div><div class=""><br class=""></div><div class="">Or:</div><div class=""><br class=""></div>See this example:<div class=""><a href="http://www.vtk.org/Wiki/VTK/Examples/Cxx/Filtering/CombinePolyData" class="">http://www.vtk.org/Wiki/VTK/Examples/Cxx/Filtering/CombinePolyData</a><br class=""></div><div class=""><br class=""></div><div class="">And the documentation for the append and clean polydata filters:</div><div class=""><a href="http://www.vtk.org/doc/nightly/html/classvtkAppendPolyData.html" class="">http://www.vtk.org/doc/nightly/html/classvtkAppendPolyData.html</a><br class=""></div><div class=""><a href="http://www.vtk.org/doc/nightly/html/classvtkCleanPolyData.html" class="">http://www.vtk.org/doc/nightly/html/classvtkCleanPolyData.html</a><br class=""></div><div class=""><br class=""></div><div class="">The vtkAppendPolyData filter produces a single polydata output from many input polydata objects.</div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">HTH,</div><div class="">David C.</div><div class=""><br class=""></div></div><div class="gmail_extra"><br class=""><div class="gmail_quote">On Wed, Oct 29, 2014 at 7:11 AM, Nick Patterson <span dir="ltr" class=""><<a href="mailto:pattersonnp@gmail.com" target="_blank" class="">pattersonnp@gmail.com</a>></span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word" class=""><div class=""><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;" class="">Dear VTK Users,<div class=""> </div><div class="">I have been having some trouble with handling polygons in VTK and hoped that someone can offer some guidance. </div><div class=""><br class=""></div><div class="">I wish to do the following:-</div><div class="">1) Read some contours (structures) from a DICOM file - these are essentially polygons drawn on 2D slices.  <b class=""><i class="">( I have completed this task and have the ability to extract the x,y,z point of each vertex from a DICOM RTStruct)</i></b> There are approximately 250 polygons.</div><div class=""><br class=""></div><div class="">2) I want to add these coordinate positions to create a vtkPolygon</div><div class=""><br class=""></div><div class="">3) I want add each vtkPolygon object to a vtkPolyData </div><div class=""><br class=""></div><div class="">4) Render the polygons. ( I can probably deal with this ).</div><div class=""><br class=""></div><div class="">Up until now I have been using the <a href="http://www.itk.org/Wiki/VTK/Examples/Cxx/GeometricObjects/Polygon" target="_blank" class="">http://www.itk.org/Wiki/VTK/Examples/Cxx/GeometricObjects/Polygon</a> example and trying to adapt it. </div><div class=""><br class=""></div><div class="">Can anyone advise how I would modify this segment of code (taken straight from the code in the link above) so that it would be generic that I can add multiple independent polygons (in the example I am working with there are approximately 250 polygons) to the vtkPolyData.</div><div class=""><br class=""></div><div class=""><pre style="padding:0px;border:0px none white;background-color:rgb(255,255,255);line-height:1.2em;font-size:10px;margin-top:0px;margin-bottom:0px;background-image:none;vertical-align:top" class="">vtkSmartPointer<span style="color:rgb(0,0,128)" class=""><</span>vtkPoints<span style="color:rgb(0,0,128)" class="">></span> points <span style="color:rgb(0,0,128)" class="">=</span>
    vtkSmartPointer<span style="color:rgb(0,0,128)" class=""><</span>vtkPoints<span style="color:rgb(0,0,128)" class="">></span><span style="color:rgb(0,128,128)" class="">::</span><span style="color:rgb(0,119,136)" class="">New</span><span style="color:rgb(0,128,0)" class="">(</span><span style="color:rgb(0,128,0)" class="">)</span><span style="color:rgb(0,128,128)" class="">;</span>
  points<span style="color:rgb(0,0,64)" class="">-</span><span style="color:rgb(0,0,128)" class="">></span>InsertNextPoint<span style="color:rgb(0,128,0)" class="">(</span><span style="color:rgb(128,0,128)" class="">0.0</span>, <span style="color:rgb(128,0,128)" class="">0.0</span>, <span style="color:rgb(128,0,128)" class="">0.0</span><span style="color:rgb(0,128,0)" class="">)</span><span style="color:rgb(0,128,128)" class="">;</span>
  points<span style="color:rgb(0,0,64)" class="">-</span><span style="color:rgb(0,0,128)" class="">></span>InsertNextPoint<span style="color:rgb(0,128,0)" class="">(</span><span style="color:rgb(128,0,128)" class="">1.0</span>, <span style="color:rgb(128,0,128)" class="">0.0</span>, <span style="color:rgb(128,0,128)" class="">0.0</span><span style="color:rgb(0,128,0)" class="">)</span><span style="color:rgb(0,128,128)" class="">;</span>
  points<span style="color:rgb(0,0,64)" class="">-</span><span style="color:rgb(0,0,128)" class="">></span>InsertNextPoint<span style="color:rgb(0,128,0)" class="">(</span><span style="color:rgb(128,0,128)" class="">1.0</span>, <span style="color:rgb(128,0,128)" class="">1.0</span>, <span style="color:rgb(128,0,128)" class="">0.0</span><span style="color:rgb(0,128,0)" class="">)</span><span style="color:rgb(0,128,128)" class="">;</span>
  points<span style="color:rgb(0,0,64)" class="">-</span><span style="color:rgb(0,0,128)" class="">></span>InsertNextPoint<span style="color:rgb(0,128,0)" class="">(</span><span style="color:rgb(128,0,128)" class="">0.0</span>, <span style="color:rgb(128,0,128)" class="">1.0</span>, <span style="color:rgb(128,0,128)" class="">0.0</span><span style="color:rgb(0,128,0)" class="">)</span><span style="color:rgb(0,128,128)" class="">;</span>
 
  <span style="color:rgb(102,102,102)" class="">// Create the polygon</span>
  vtkSmartPointer<span style="color:rgb(0,0,128)" class=""><</span>vtkPolygon<span style="color:rgb(0,0,128)" class="">></span> polygon <span style="color:rgb(0,0,128)" class="">=</span>
    vtkSmartPointer<span style="color:rgb(0,0,128)" class=""><</span>vtkPolygon<span style="color:rgb(0,0,128)" class="">></span><span style="color:rgb(0,128,128)" class="">::</span><span style="color:rgb(0,119,136)" class="">New</span><span style="color:rgb(0,128,0)" class="">(</span><span style="color:rgb(0,128,0)" class="">)</span><span style="color:rgb(0,128,128)" class="">;</span>
  polygon<span style="color:rgb(0,0,64)" class="">-</span><span style="color:rgb(0,0,128)" class="">></span>GetPointIds<span style="color:rgb(0,128,0)" class="">(</span><span style="color:rgb(0,128,0)" class="">)</span><span style="color:rgb(0,0,64)" class="">-</span><span style="color:rgb(0,0,128)" class="">></span>SetNumberOfIds<span style="color:rgb(0,128,0)" class="">(</span><span style="color:rgb(0,0,221)" class="">4</span><span style="color:rgb(0,128,0)" class="">)</span><span style="color:rgb(0,128,128)" class="">;</span> <span style="color:rgb(102,102,102)" class="">//make a quad</span>
  polygon<span style="color:rgb(0,0,64)" class="">-</span><span style="color:rgb(0,0,128)" class="">></span>GetPointIds<span style="color:rgb(0,128,0)" class="">(</span><span style="color:rgb(0,128,0)" class="">)</span><span style="color:rgb(0,0,64)" class="">-</span><span style="color:rgb(0,0,128)" class="">></span>SetId<span style="color:rgb(0,128,0)" class="">(</span><span style="color:rgb(0,0,221)" class="">0</span>, <span style="color:rgb(0,0,221)" class="">0</span><span style="color:rgb(0,128,0)" class="">)</span><span style="color:rgb(0,128,128)" class="">;</span>
  polygon<span style="color:rgb(0,0,64)" class="">-</span><span style="color:rgb(0,0,128)" class="">></span>GetPointIds<span style="color:rgb(0,128,0)" class="">(</span><span style="color:rgb(0,128,0)" class="">)</span><span style="color:rgb(0,0,64)" class="">-</span><span style="color:rgb(0,0,128)" class="">></span>SetId<span style="color:rgb(0,128,0)" class="">(</span><span style="color:rgb(0,0,221)" class="">1</span>, <span style="color:rgb(0,0,221)" class="">1</span><span style="color:rgb(0,128,0)" class="">)</span><span style="color:rgb(0,128,128)" class="">;</span>
  polygon<span style="color:rgb(0,0,64)" class="">-</span><span style="color:rgb(0,0,128)" class="">></span>GetPointIds<span style="color:rgb(0,128,0)" class="">(</span><span style="color:rgb(0,128,0)" class="">)</span><span style="color:rgb(0,0,64)" class="">-</span><span style="color:rgb(0,0,128)" class="">></span>SetId<span style="color:rgb(0,128,0)" class="">(</span><span style="color:rgb(0,0,221)" class="">2</span>, <span style="color:rgb(0,0,221)" class="">2</span><span style="color:rgb(0,128,0)" class="">)</span><span style="color:rgb(0,128,128)" class="">;</span>
  polygon<span style="color:rgb(0,0,64)" class="">-</span><span style="color:rgb(0,0,128)" class="">></span>GetPointIds<span style="color:rgb(0,128,0)" class="">(</span><span style="color:rgb(0,128,0)" class="">)</span><span style="color:rgb(0,0,64)" class="">-</span><span style="color:rgb(0,0,128)" class="">></span>SetId<span style="color:rgb(0,128,0)" class="">(</span><span style="color:rgb(0,0,221)" class="">3</span>, <span style="color:rgb(0,0,221)" class="">3</span><span style="color:rgb(0,128,0)" class="">)</span><span style="color:rgb(0,128,128)" class="">;</span>
 
  <span style="color:rgb(102,102,102)" class="">// Add the polygon to a list of polygons</span>
  vtkSmartPointer<span style="color:rgb(0,0,128)" class=""><</span>vtkCellArray<span style="color:rgb(0,0,128)" class="">></span> polygons <span style="color:rgb(0,0,128)" class="">=</span>
    vtkSmartPointer<span style="color:rgb(0,0,128)" class=""><</span>vtkCellArray<span style="color:rgb(0,0,128)" class="">></span><span style="color:rgb(0,128,128)" class="">::</span><span style="color:rgb(0,119,136)" class="">New</span><span style="color:rgb(0,128,0)" class="">(</span><span style="color:rgb(0,128,0)" class="">)</span><span style="color:rgb(0,128,128)" class="">;</span>
  polygons<span style="color:rgb(0,0,64)" class="">-</span><span style="color:rgb(0,0,128)" class="">></span>InsertNextCell<span style="color:rgb(0,128,0)" class="">(</span>polygon<span style="color:rgb(0,128,0)" class="">)</span><span style="color:rgb(0,128,128)" class="">;</span>
 
  <span style="color:rgb(102,102,102)" class="">// Create a PolyData</span>
  vtkSmartPointer<span style="color:rgb(0,0,128)" class=""><</span>vtkPolyData<span style="color:rgb(0,0,128)" class="">></span> polygonPolyData <span style="color:rgb(0,0,128)" class="">=</span>
    vtkSmartPointer<span style="color:rgb(0,0,128)" class=""><</span>vtkPolyData<span style="color:rgb(0,0,128)" class="">></span><span style="color:rgb(0,128,128)" class="">::</span><span style="color:rgb(0,119,136)" class="">New</span><span style="color:rgb(0,128,0)" class="">(</span><span style="color:rgb(0,128,0)" class="">)</span><span style="color:rgb(0,128,128)" class="">;</span>
  polygonPolyData<span style="color:rgb(0,0,64)" class="">-</span><span style="color:rgb(0,0,128)" class="">></span>SetPoints<span style="color:rgb(0,128,0)" class="">(</span>points<span style="color:rgb(0,128,0)" class="">)</span><span style="color:rgb(0,128,128)" class="">;</span>
  polygonPolyData<span style="color:rgb(0,0,64)" class="">-</span><span style="color:rgb(0,0,128)" class="">></span>SetPolys<span style="color:rgb(0,128,0)" class="">(</span>polygons<span style="color:rgb(0,128,0)" class="">)</span><span style="color:rgb(0,128,128)" class="">;</span></pre><div class=""><br class=""></div></div><div class=""><br class=""></div><div class="">I hope my problem is clear, but am happy to clarify if you think you are able to offer guidance which would be much appreciated.</div><div class=""><br class=""></div><div class="">Regards, Nick.</div></div></div></div><br class="">_______________________________________________<br class="">
Powered by <a href="http://www.kitware.com/" target="_blank" class="">www.kitware.com</a><br class="">
<br class="">
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" target="_blank" class="">http://www.kitware.com/opensource/opensource.html</a><br class="">
<br class="">
Please keep messages on-topic and check the VTK FAQ at: <a href="http://www.vtk.org/Wiki/VTK_FAQ" target="_blank" class="">http://www.vtk.org/Wiki/VTK_FAQ</a><br class="">
<br class="">
Follow this link to subscribe/unsubscribe:<br class="">
<a href="http://public.kitware.com/mailman/listinfo/vtkusers" target="_blank" class="">http://public.kitware.com/mailman/listinfo/vtkusers</a><br class="">
<br class=""></blockquote></div><br class=""></div>
</div></blockquote></div><br class=""></div></body></html>