用python读取VTK文件

用python读取VTK文件,python,vtk,openfoam,Python,Vtk,Openfoam,我有以下VTK文件,它是由以下程序生成的: 它是三维域的平面剖切面。有4个点,它们创建了两个三角形。在每个点上,定义向量U。我可以通过以下代码获得点数和点数: import vtk reader = vtk.vtkPolyDataReader() reader.SetFileName('myVTKfile.vtk') reader.ReadAllScalarsOn() reader.ReadAllVectorsOn() reader.ReadAllTensorsOn() reader.Updat

我有以下VTK文件,它是由以下程序生成的:

它是三维域的平面剖切面。有4个点,它们创建了两个三角形。在每个点上,定义向量U。我可以通过以下代码获得点数和点数:

import vtk
reader = vtk.vtkPolyDataReader()
reader.SetFileName('myVTKfile.vtk')
reader.ReadAllScalarsOn()
reader.ReadAllVectorsOn()
reader.ReadAllTensorsOn()
reader.Update()
vtkdata = reader.GetOutput()

print vtkdata.GetNumberOfPoints()
print vtkdata.GetPoint(0)
不幸的是,我还没有找到一个可能得到三角形列表(多边形)和数据列表(向量U)。有人能帮我处理这件事吗

Marcel

对于逐点数据(如标量和向量),您可以通过以下方式访问它:

pointData = vtkdata.GetPointData()
vectorData = pointData.GetVectors()
vectorData随后将包含一个可以使用的vtkDataArray

对于几何体数据,可以使用GetVerts、GetLines、GetPoly(三角形、四边形和其他多边形)以及可能的GetStrips(对于三角形带)方法。对于尚未拼凑成三角形条带的三角形,可以使用以下工具访问数据:

polyCells = vtkdata.GetPolys()
numPolys = polyCells.GetNumberOfCells() #Number of polygons (triangles in your case)
从python中访问单元数据(只是一个点索引列表)有点麻烦,而且自从我上次使用VTK编写任何东西以来,已经发生了明显的变化。(使用VTK 5.x返回)。至少,您可以获取单元阵列并按如下所述进行扫描:

polyCells = vtkdata.GetPolys()
numPolys = polyCells.GetNumberOfCells() #Number of polygons (triangles in your case)