vtkDataSetWriter SetFileVersion is not taken into account in delegate writer
From VTK Discourse: https://discourse.vtk.org/t/usage-of-setfileversion-method/10861
The file version set with vtkDataSetWriter::SetFileVersion is not set in the delegate writer and the written file does not comply with the requested version.
Sample code to reproduce:
auto dataSet = vtkSmartPointer<vtkUnstructuredGrid> :: New();
auto points = vtkSmartPointer<vtkPoints> :: New();
auto cellArray = vtkSmartPointer<vtkCellArray> :: New();
// Add points
points->InsertNextPoint(0, 0, 0);
points->InsertNextPoint(1, 0, 0);
points->InsertNextPoint(0, 1, 0);
points->InsertNextPoint(1, 1, 0);
dataSet->SetPoints(points);
// Add quad
auto quad = vtkSmartPointer<vtkQuad> :: New();
quad->GetPointIds()->SetId(0, 0);
quad->GetPointIds()->SetId(1, 1);
quad->GetPointIds()->SetId(2, 2);
quad->GetPointIds()->SetId(3, 3);
cellArray->InsertNextCell(quad);
dataSet->SetCells(VTK_QUAD,cellArray);
// Write file
vtkNew<vtkDataSetWriter> writer;
#if VTK_MAJOR_VERSION >= 9 && VTK_MINOR_VERSION >= 1
// Set writer version 4.2
cout << "Force saving at format 4.2" << std::endl;
writer->SetFileVersion(42);
#endif
writer->SetFileName("output.vtk");
writer->SetInputData(dataSet);
writer->Write();
The written file header is # vtk DataFile Version 5.1
instead of # vtk DataFile Version 4.2
.
Work-around is to use vtkUnstructuredGridWriter
instead of vtkDataSetWriter
.
Simple fix is in vtkDataSetWriter::WriteData()
to add writer->SetFileVersion(this->FileVersion);
before the call to writer->Write();
.
I'll create an MR shortly.