But, how could I get the polygon out of a contour?? I mean applying the contour widget lets you define points and you can close that to forma a 2D contour. Once that&#39;s finished how to get the polygon out of that contour??<div class="gmail_extra">
<br><br><div class="gmail_quote">2012/12/3 David Doria <span dir="ltr">&lt;<a href="mailto:daviddoria@gmail.com" target="_blank">daviddoria@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
This also has nothing to do with the widget. You can produce the same<br>
error with much simpler code (see below).<br>
<br>
You can see from here:<br>
<a href="http://www.vtk.org/doc/nightly/html/vtkCellType_8h_source.html" target="_blank">http://www.vtk.org/doc/nightly/html/vtkCellType_8h_source.html</a><br>
<br>
that &quot;3&quot; means VTK_LINE, which makes sense, because you added lines to<br>
the polydata. The vtkTriangleFilter doesn&#39;t sound like it triangulates<br>
the area inside the contour, but rather only divides existing polygons<br>
into triangles:<br>
<a href="http://www.vtk.org/doc/nightly/html/classvtkTriangleFilter.html#details" target="_blank">http://www.vtk.org/doc/nightly/html/classvtkTriangleFilter.html#details</a><br>
<br>
So what you have to do instead is make a polygon from your points,<br>
then it seems to work:<br>
<br>
#include &lt;vtkSmartPointer.h&gt;<br>
#include &lt;vtkPolygon.h&gt;<br>
<div class="im">#include &lt;vtkPolyData.h&gt;<br>
#include &lt;vtkCellArray.h&gt;<br>
#include &lt;vtkPoints.h&gt;<br>
#include &lt;vtkMath.h&gt;<br>
</div>#include &lt;vtkTriangleFilter.h&gt;<br>
#include &lt;vtkMassProperties.h&gt;<br>
<br>
int main()<br>
{<br>
  vtkSmartPointer&lt;vtkPolyData&gt; polydata = vtkSmartPointer&lt;vtkPolyData&gt;::New();<br>
<div class="im">  vtkSmartPointer&lt;vtkPoints&gt; points = vtkSmartPointer&lt;vtkPoints&gt;::New();<br>
</div>  vtkSmartPointer&lt;vtkCellArray&gt; cellArray =<br>
vtkSmartPointer&lt;vtkCellArray&gt;::New();<br>
<br>
  const unsigned int numberOfPoints = 21;<br>
  // Create the polygon<br>
  vtkSmartPointer&lt;vtkPolygon&gt; polygon =<br>
    vtkSmartPointer&lt;vtkPolygon&gt;::New();<br>
  polygon-&gt;GetPointIds()-&gt;SetNumberOfIds(numberOfPoints);<br>
<br>
  vtkIdType* lineIndices = new vtkIdType[numberOfPoints];<br>
  for (int i = 0; i &lt; numberOfPoints; i++)<br>
    {<br>
    polygon-&gt;GetPointIds()-&gt;SetId(i, i);<br>
<br>
    const double angle =<br>
2.0*vtkMath::Pi()*i/static_cast&lt;double&gt;(numberOfPoints);<br>
<div class="im">    points-&gt;InsertPoint(static_cast&lt;vtkIdType&gt;(i), 0.1*cos(angle),<br>
                        0.1*sin(angle), 0.0 );<br>
    lineIndices[i] = static_cast&lt;vtkIdType&gt;(i);<br>
    }<br>
<br>
</div>  cellArray-&gt;InsertNextCell(polygon);<br>
  polydata-&gt;SetPoints(points);<br>
  polydata-&gt;SetPolys(cellArray);<br>
<div class="im"><br>
  vtkSmartPointer&lt; vtkTriangleFilter &gt; triangles =<br>
          vtkSmartPointer&lt; vtkTriangleFilter &gt;::New();<br>
</div>  triangles-&gt;SetInputData(polydata);<br>
  triangles-&gt;Update();<br>
<div class="im"><br>
  vtkSmartPointer&lt; vtkMassProperties &gt; massProp =<br>
          vtkSmartPointer&lt; vtkMassProperties &gt;::New();<br>
</div>  massProp-&gt;SetInputConnection(triangles-&gt;GetOutputPort());<br>
  massProp-&gt;Update();<br>
  double area = massProp-&gt;GetSurfaceArea();<br>
<br>
  std::cout &lt;&lt; area;<br>
<br>
}<br>
<span class="HOEnZb"><font color="#888888"><br>
David<br>
</font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br><b><font face="&#39;comic sans ms&#39;, sans-serif" color="#000066">Rodrigo aka WarHearT</font></b><br>
</div>