<div dir="ltr"><span style="font-family:arial,sans-serif;font-size:13px">Hi,</span><div style="font-family:arial,sans-serif;font-size:13px">     I have an example (<a href="http://www.vtk.org/Wiki/VTK/Examples/Cxx/Visualization/CurvedReformation" target="_blank">http://www.vtk.org/Wiki/VTK/Examples/Cxx/Visualization/CurvedReformation</a> ), and i am modifying this example, i am trying to find the point data on the data, i have modified this code, in that way which i am showing, but i am getting some unexpected pointdata values which are nearly zero and which is not possible. could you please suggest me some solution regarding this?</div>
<div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px"><div>static vtkSmartPointer&lt;vtkPolyData&gt; SweepLine (vtkPolyData *line,</div><div>                                               double direction[3],</div>
<div>                                               double distance,</div><div>                                               unsigned int cols);</div><div>int main (int argc, char *argv[])</div><div>{</div><div>  // Verify arguments</div>
<div>  if (argc &lt; 4)</div><div>    {</div><div>      std::cout &lt;&lt; &quot;Usage: &quot; &lt;&lt; argv[0]</div><div>                &lt;&lt; &quot; InputVolume PolyDataInput&quot;</div><div>                &lt;&lt; &quot; Resolution&quot;</div>
<div>                &lt;&lt; std::endl;</div><div>      return EXIT_FAILURE;</div><div>    }</div><div><br></div><div>  // Parse arguments</div><div>  std::string volumeFileName = argv[1];</div><div>  std::string polyDataFileName = argv[2];</div>
<div>  std::stringstream ssResolution;</div><div>  ssResolution &lt;&lt; argv[3];</div><div>  unsigned int resolution;</div><div>  ssResolution &gt;&gt; resolution;</div><div><br></div><div>  // Output arguments</div><div>
  std::cout &lt;&lt; &quot;InputVolume: &quot; &lt;&lt; volumeFileName &lt;&lt; std::endl</div><div>            &lt;&lt; &quot;PolyDataInput: &quot; &lt;&lt; polyDataFileName &lt;&lt; std::endl</div><div>            &lt;&lt; &quot;Resolution: &quot; &lt;&lt; resolution &lt;&lt; std::endl;</div>
<div><br></div><div>  // Read the volume data</div><div>  vtkSmartPointer&lt; vtkImageReader2Factory &gt; imageFactory =</div><div>    vtkSmartPointer&lt; vtkImageReader2Factory &gt;::New();</div><div>  vtkImageReader2 *imageReader =</div>
<div>  imageFactory-&gt;CreateImageReader2(volumeFileName.c_str());</div><div>  imageReader-&gt;SetFileName(volumeFileName.c_str());</div><div>  imageReader-&gt;Update();</div><div><br></div><div>  // Read the Polyline</div>
<div>  vtkSmartPointer&lt;vtkPolyDataReader&gt; polyLineReader =</div><div>    vtkSmartPointer&lt;vtkPolyDataReader&gt;::New();</div><div>  polyLineReader-&gt;SetFileName(polyDataFileName.c_str());</div><div>  polyLineReader-&gt;Update();</div>
<div><br></div><div>  vtkSmartPointer&lt;vtkSplineFilter&gt; spline =</div><div>    vtkSmartPointer&lt;vtkSplineFilter&gt;::New();</div><div>  spline-&gt;SetInputConnection(polyLineReader-&gt;GetOutputPort());</div><div>  spline-&gt;SetSubdivideToSpecified();</div>
<div>  spline-&gt;SetNumberOfSubdivisions(resolution);</div><div><br></div><div>  // Sweep the line to form a surface</div><div>  double direction[3];</div><div>  direction[0] = 0.0;</div><div>  direction[1] = 0.0;</div><div>
  direction[2] = 1.0;</div><div>  double distance = 164;</div><div>  spline-&gt;Update();</div><div>  vtkSmartPointer&lt;vtkPolyData&gt; surface =</div><div>    SweepLine(spline-&gt;GetOutput(),</div><div>              direction,</div>
<div>              distance,</div><div>              atoi(argv[3]));</div><div><br></div><div>  // Probe the volume with the extruded surface</div><div>  vtkSmartPointer&lt;vtkProbeFilter&gt; sampleVolume =</div><div>    vtkSmartPointer&lt;vtkProbeFilter&gt;::New();</div>
<div>  sampleVolume-&gt;SetInputConnection(1, imageReader-&gt;GetOutputPort());</div><div>#if VTK_MAJOR_VERSION &lt;= 5</div><div>  sampleVolume-&gt;SetInput(0, surface);</div><div> #else</div><div>  sampleVolume-&gt;SetInputData(0, surface);</div>
<div>#endif</div><div>  // Compute a simple window/level based on scalar range</div><div>  vtkSmartPointer&lt;vtkWindowLevelLookupTable&gt; wlLut =</div><div>    vtkSmartPointer&lt;vtkWindowLevelLookupTable&gt;::New();</div>
<div>  double range = imageReader-&gt;GetOutput()-&gt;GetScalarRange()[1] -</div><div>                 imageReader-&gt;GetOutput()-&gt;GetScalarRange()[0];</div><div>  double level = (imageReader-&gt;GetOutput()-&gt;GetScalarRange()[1] +</div>
<div>                  imageReader-&gt;GetOutput()-&gt;GetScalarRange()[0]) / 2.0;</div><div>  wlLut-&gt;SetWindow(range);</div><div>  wlLut-&gt;SetLevel(level);</div><div>  sampleVolume-&gt;Update();</div></div><div style="font-family:arial,sans-serif;font-size:13px">
<br></div><div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px"><b><font color="#990000">// From Here i have done modification in my code.</font></b></div>
<div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px"><div>// To find out the Pointdata of a surface</div><div><br></div><div>  // Extract the polydata</div>
<div>   vtkSmartPointer&lt;vtkPolyData&gt; polydata = </div><div><span style="white-space:pre-wrap">        </span>vtkSmartPointer&lt;vtkPolyData&gt; :: New();</div><div>   polydata = vtkPolyData::SafeDownCast(sampleVolume-&gt;GetOutput());</div>
<div><br></div><div>  // Get the number of points in the polydata</div><div>  vtkIdType idNumPointsInFile = polydata-&gt;GetNumberOfPoints();</div><div><br></div><div>  vtkSmartPointer&lt;vtkDoubleArray&gt; array = vtkSmartPointer&lt;vtkDoubleArray&gt; :: New();</div>
<div> //  array-&gt;SetName(&quot;Double&quot;);</div><div>   array-&gt;SetNumberOfTuples(idNumPointsInFile);</div><div><br></div><div>  polydata-&gt;GetPointData()-&gt;AddArray(array);</div><div><br></div><div>  // array = vtkDoubleArray::SafeDownCast(polydata-&gt;GetPointData()-&gt;GetArray(&quot;Double&quot;));</div>
<div><span style="white-space:pre-wrap">        </span></div><div>  if(array)</div><div>    {</div><div>    for(int i = 0; i &lt; idNumPointsInFile; i++)      </div><div>      {</div><div>      std::cout &lt;&lt; &quot;Got array.= &quot; &lt;&lt; i &lt;&lt; std::endl;</div>
<div>      double dist;</div><div>      dist = array-&gt;GetValue(i);</div><div>      </div><div>      // if the array held arrays instead of scalars, you would use this:<span style="white-space:pre-wrap">                </span>  </div>
<div>      // double location[3];</div><div>      // array-&gt;GetTupleValue(i, location);</div><div>      // std::cout &lt;&lt; &quot;Location: &quot; &lt;&lt; Location[0] &lt;&lt; &quot;,&quot;  &lt;&lt; Location[1] &lt;&lt; &quot;,&quot; &lt;&lt; Location[2] &lt;&lt; std::endl;</div>
<div>      </div><div>  std::cout &lt;&lt; &quot;Distance: &quot; &lt;&lt; dist &lt;&lt; std::endl;</div><div>      }</div><div>    } //end if(array)</div><div>  else</div><div>    {</div><div>    std::cout &lt;&lt; &quot;no array.&quot; &lt;&lt; std::endl;</div>
<div>    }</div><div><br></div><div>  system(&quot;PAUSE&quot;);</div><div><br></div><div>  return EXIT_SUCCESS;</div></div><div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">
}</div><div><br></div></div>