Can't write vtkMultiBlockDataSet with empty poly data.
When a multiblock contains an empty poly data (i.e. that it contains no points and no cells), then the vtkXMLCompositeDataWriter fails and the executive returns an error.
To reproduce with VTK python:
from vtkmodules import vtkIOXML
from vtkmodules.vtkCommonDataModel import (
vtkPolyData,
vtkMultiBlockDataSet,
vtkCompositeDataSet,
)
mbds = vtkMultiBlockDataSet()
mbds.SetNumberOfBlocks(2)
block_0 = vtkPolyData()
mbds.SetBlock(0, block_0)
mbds.GetMetaData(0).Set(vtkCompositeDataSet.NAME(), "foo")
block_1 = vtkPolyData()
mbds.SetBlock(1, block_1)
mbds.GetMetaData(1).Set(vtkCompositeDataSet.NAME(), "bar")
writer = vtkIOXML.vtkXMLMultiBlockDataWriter()
writer.SetFileName("vtk_test.vtm")
writer.SetInputData(mbds)
writer.Update(0)
writer.Write()
This case seems legit to me, and there is a trivial fix similar to the one for #19175 (closed): vtkXMLCompositeDataWriter::WriteNonCompositeData
should return 1 when a writer is not available. I'll push a fix shortly.
Edited by Francois Mazen