38#include <vtkCellArray.h> 
   39#include <vtkPointData.h> 
   41#include <vtkPolyData.h> 
   42#include <vtkPolyDataReader.h> 
   43#include <vtkPolyDataWriter.h> 
   44#include <vtkTriangle.h> 
   46int main(
int argc, 
char *argv[])
 
   50        cout << 
"Usage: VtkStripsToPolys vtk-file" << endl;
 
   55#if VTK_MAJOR_VERSION >= 9 ||                                                  \ 
   56    (VTK_MAJOR_VERSION >= 8 && VTK_MINOR_VERSION >= 90) 
   57    const vtkIdType *pts = 0;
 
   63    vtkPolyDataReader *vtkMeshReader = vtkPolyDataReader::New();
 
   64    vtkMeshReader->SetFileName(argv[1]);
 
   65    vtkMeshReader->Update();
 
   66    vtkPolyData *vtkMesh    = vtkMeshReader->GetOutput();
 
   67    vtkPoints *vtkPoints    = vtkMesh->GetPoints();
 
   68    vtkCellArray *vtkStrips = vtkMesh->GetStrips();
 
   71    ASSERTL0(vtkPoints, 
"ERROR: cannot get points from mesh.");
 
   72    ASSERTL0(vtkStrips, 
"ERROR: cannot get triangle strips from mesh.");
 
   75    vtkCellArray *vtkPolys = vtkCellArray::New();
 
   78    vtkStrips->InitTraversal();
 
   79    for (
int i = 0; vtkStrips->GetNextCell(npts, pts); ++i)
 
   81        for (
int j = 0; j < npts - 2; ++j)
 
   83            vtkPolys->InsertNextCell(3, &pts[j]);
 
   88    vtkPolyData *vtkNewMesh = vtkPolyData::New();
 
   89    vtkNewMesh->SetPoints(vtkPoints);
 
   90    vtkNewMesh->SetPolys(vtkPolys);
 
   93    for (
int i = 0; i < vtkMesh->GetPointData()->GetNumberOfArrays(); ++i)
 
   95        vtkNewMesh->GetPointData()->SetScalars(
 
   96            vtkMesh->GetPointData()->GetArray(i));
 
  100    vtkPolyDataWriter *vtkMeshWriter = vtkPolyDataWriter::New();
 
  101    vtkMeshWriter->SetFileName(argv[2]);
 
  102#if VTK_MAJOR_VERSION <= 5 
  103    vtkMeshWriter->SetInput(vtkNewMesh);
 
  105    vtkMeshWriter->SetInputData(vtkNewMesh);
 
  107    vtkMeshWriter->Write();
 
#define ASSERTL0(condition, msg)
 
int main(int argc, char *argv[])