先看我有的vtk文件,打开看到数据集结构为PolyData
我们需要使用C++来读取该二进制文件,然后进行获取里边的标量。
// 引入必要头文件
#include "QDebug"
#include <vtkSmartPointer.h>
#include <vtkPolyDataReader.h>
#include <vtkPolyData.h>
#include <vtkPointData.h>
// 初始化指针
vtkSmartPointer<vtkPolyDataReader> inert_reader = vtkSmartPointer<vtkPolyDataReader>::New();
vtkSmartPointer<vtkPolyData> inert_polydata = vtkSmartPointer<vtkPolyData>::New();
inert_reader->SetFileName("E:/particles/Particle_inert_0124.vtk");
inert_reader->Update(); // 读取 VTK 文件并获取 PolyData 对象
inert_polydata = inert_reader->GetOutput();
vtkPointData* pointData = inert_polydata->GetPointData();
int numArrays = pointData->GetNumberOfArrays();
for (int t = 0; t < numArrays; t++) {
std::string arrayName = pointData->GetArrayName(t);
// 输出每个数组的名称
qDebug() << QString::fromStdString(arrayName);
}
最终让输出标量属性,可以看到有如下输出: