16 cout <<
"Usage: VtkStripsToPolys vtk-file" << endl;
21 #if VTK_MAJOR_VERSION >= 9 || \
22 (VTK_MAJOR_VERSION >= 8 && VTK_MINOR_VERSION >= 90)
23 const vtkIdType *pts = 0;
29 vtkPolyDataReader *vtkMeshReader = vtkPolyDataReader::New();
30 vtkMeshReader->SetFileName(argv[1]);
31 vtkMeshReader->Update();
32 vtkPolyData *vtkMesh = vtkMeshReader->GetOutput();
33 vtkPoints *vtkPoints = vtkMesh->GetPoints();
34 vtkCellArray *vtkStrips = vtkMesh->GetStrips();
37 ASSERTL0(vtkPoints,
"ERROR: cannot get points from mesh.");
38 ASSERTL0(vtkStrips,
"ERROR: cannot get triangle strips from mesh.");
41 vtkCellArray *vtkPolys = vtkCellArray::New();
44 vtkStrips->InitTraversal();
45 for (
int i = 0; vtkStrips->GetNextCell(npts, pts); ++i)
47 for (
int j = 0; j < npts - 2; ++j)
49 vtkPolys->InsertNextCell(3, &pts[j]);
54 vtkPolyData *vtkNewMesh = vtkPolyData::New();
55 vtkNewMesh->SetPoints(vtkPoints);
56 vtkNewMesh->SetPolys(vtkPolys);
59 for (
int i = 0; i < vtkMesh->GetPointData()->GetNumberOfArrays(); ++i)
61 vtkNewMesh->GetPointData()->SetScalars(
62 vtkMesh->GetPointData()->GetArray(i));
66 vtkPolyDataWriter *vtkMeshWriter = vtkPolyDataWriter::New();
67 vtkMeshWriter->SetFileName(argv[2]);
68 #if VTK_MAJOR_VERSION <= 5
69 vtkMeshWriter->SetInput(vtkNewMesh);
71 vtkMeshWriter->SetInputData(vtkNewMesh);
73 vtkMeshWriter->Write();
#define ASSERTL0(condition, msg)