#include <vtkSmartPointer.h>
#include <vtkPoints.h>
#include <vtkPolyData.h>
#include <vtkPointData.h>
#include <vtkCellArray.h>
#include <vtkMath.h>
#include <vtkXMLPolyDataReader.h>
#include <vtkModifiedBSPTree.h>
#include <vtkStructuredPointsReader.h>
#include <vtkImageDataGeometryFilter.h>
#include <vtkContourFilter.h>
#include <vtkPolyDataWriter.h>
int main(int, char *[])
{
vtkSmartPointer<vtkStructuredPointsReader> reader =
vtkSmartPointer<vtkStructuredPointsReader>::New();
reader->SetFileName("Points.vtk");
reader->Update();
vtkSmartPointer<vtkImageDataGeometryFilter> geometryFilter =
vtkSmartPointer<vtkImageDataGeometryFilter>::New();
geometryFilter->SetInputConnection(reader->GetOutputPort());
geometryFilter->Update();
vtkContourFilter * contour = vtkContourFilter::New();
contour->SetInputConnection(geometryFilter->GetOutputPort());
contour->SetValue(0, 128);
// Save mesh as vtk Poly Data
vtkPolyDataWriter * writerMesh = vtkPolyDataWriter::New();
writerMesh->SetFileName("MeshVTK.vtk");
writerMesh->SetInputConnection(contour->GetOutputPort());
writerMesh->Write();
contour->Delete();
writerMesh->Delete();
return EXIT_SUCCESS;
}