nschloe / meshio

:spider_web: input/output for many mesh formats
MIT License
1.9k stars 396 forks source link

can not load mesh in paraview: cannot unpack non-iterable CellBlock object #1307

Open reox opened 2 years ago

reox commented 2 years ago

I noticed I could not load meshes with the paraview plugin when using 5.3.4 on python 3.8:

Traceback (most recent call last):
  File "/programs/shared/paraview/ParaView-5.9.0-RC3-MPI-Linux-Python3.8-64bit/lib/python3.8/site-packages/vtkmodules/util/vtkAlgorithm.py", line 152, in ProcessRequest
    return vtkself.ProcessRequest(request, inInfo, outInfo)
  File "/programs/shared/paraview/ParaView-5.9.0-RC3-MPI-Linux-Python3.8-64bit/lib/python3.8/site-packages/vtkmodules/util/vtkAlgorithm.py", line 198, in ProcessRequest
    return self.RequestData(request, inInfo, outInfo)
  File "/home/reox/.local/share/paraview-5.9/plugins/paraview-meshio-plugin.py", line 85, in RequestData
    for meshio_type, data in cells:
TypeError: cannot unpack non-iterable CellBlock object

This line was probably not updated to the (new?) CellBlock class: https://github.com/nschloe/meshio/blob/0138cc8692b806b44b32d344f7961e8370121ff7/tools/paraview-meshio-plugin.py#L85

I think changing the lines to:

for cellblock in cells:
    meshio_type = cellblock.type
    data = cellblock.data

should do the trick (at least for me the mesh loads again), but I don't know if anything else has to be changed?

mkghadban commented 1 year ago

Indeed, this is an issue that I faced as well (Ubuntu 20.04, Paraview 5.11.0, and meshio 5.3.4) . However, the proposed solution

for cellblock in cells: meshio_type = cellblock.type data = cellblock.data

resulted in:

ValueError: invalid literal for int() with base 10: 'quad'

what worked for me is the following:

for cellblock in cells: meshio_type = meshio_to_vtk_type[cellblock.type] data = cellblock.data ...

I hope this helps!

mwestphal commented 1 month ago

Issue is still present in the plugin