本文共 3669 字,大约阅读时间需要 12 分钟。
目录
报错原因:<cell>元素填写不对
ERROR: In C:\glr\builds\paraview\paraview-ci\build\superbuild\paraview\src\VTK\IO\XML\vtkXMLUnstructuredDataReader.cxx, line 647
vtkXMLUnstructuredGridReader (000001FAC8C7BA40): Cannot read cell offsets from Cells in piece 0 because the "offsets" array is not long enough.报错代码位于: int vtkXMLUnstructuredDataReader::ReadCellArray(vtkIdType numberOfCells,
vtkIdType vtkNotUsed(totalNumberOfCells), vtkXMLDataElement* eCells, vtkCellArray* outCells)中:int vtkXMLUnstructuredDataReader::ReadCellArray(vtkIdType numberOfCells, vtkIdType vtkNotUsed(totalNumberOfCells), vtkXMLDataElement* eCells, vtkCellArray* outCells)
ERROR: In D:\pv\ParaView\VTK\IO\XML\vtkXMLUnstructuredGridReader.cxx, line 293
vtkXMLUnstructuredGridReader (000001EBA1A74270): Cannot read cell types from Cells in piece 0 because the "types" array is not long enough.
《》中对cell元素的说明如下:
文档中并没有说明<cell>中三个<DataArray>如何填充,尤其是offsets如何填充。
但是我们在发现paraview包含功能,可以把现有的vtk文件保存为vtu文件,从而得到规则。
vtk文件根据《》中的例子三,自己设计。
下面以一个demo尝试去理解paraview中<CELL>三个<DataArray>填充规则:
test.vtk文件如下:
# vtk DataFile Version 2.0Unstructured Grid ExampleASCIIDATASET UNSTRUCTURED_GRIDPOINTS 12 float0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 1 0 10 1 1 1 1 1 2 0 0 2 1 0 2 0 1 2 1 1 CELLS 2 188 0 1 2 3 4 5 6 78 1 8 3 9 5 10 7 11 CELL_TYPES 21111 POINT_DATA 12SCALARS scalars float 1LOOKUP_TABLE default0.0 1.0 2.0 3.0 4.0 5.06.0 7.0 8.0 9.0 10.0 11.0
paraview中显示test.vtk:
paraview 保存test.vtk为test.vtu文件:
【file】--》【save data]--》修改file of types为vtu,并且输入文件名称--》点击【ok】按钮后弹出,configure writer对话框,修改【Data Mode】为Ascii:
得到的test.vtu文件如下:
0 1 2 3 4 5 6 7 8 9 10 11 0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 1 0 1 0 1 1 1 1 1 2 0 0 2 1 0 2 0 1 2 1 1 0 2.4494897428 0 2.4494897428 0 1 2 3 4 5 6 7 1 8 3 9 5 10 7 11 8 16 11 11
paraview打开test.vtu文件,显示效果跟test.vtk完全一样。
删除《》没有介绍的一些字段和属性。
下面做一些实验:
删掉其中的<InformationKey>元素和删除<DataArray>中的RangeMin和RangeMax属性。得到1.vtu文件如下:
0 1 2 3 4 5 6 7 8 9 10 11 0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 1 0 1 0 1 1 1 1 1 2 0 0 2 1 0 2 0 1 2 1 1 0 1 2 3 4 5 6 7 1 8 3 9 5 10 7 11 8 16 11 11
paraview显示效果同test.vtu和test.vtk.
下面再看看报错的vtk文件:
0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 1 0 1 0 1 1 1 1 1 2 0 0 2 1 0 2 0 1 2 1 1 0 1 2 3 4 5 6 7 0 0 11 1 8 3 9 5 10 7 11 0 0 11
理解正确的vtu文件就可以了,不要被误导
转载地址:http://lzcrf.baihongyu.com/