在 VTK 中有 3 种类型的“结构化”网格,vtkImageData(vtkUniformGrid 派生自此)、vtkRectilinearGrid 和 vtkStructuredGrid。它们都是在拓扑设置的意义上结构化的。vtkImageData 在点之间具有恒定的间距并且是轴对齐的,vtkRectilinearGrid 是轴对齐的,但是可以在每个轴方向上改变间距,并且 vtkStructuredGrid 具有任意定位的点(尽管单元格可能无效)。
对于你想做的事情,你应该做:
from vtk import *
dx = 2.0
grid = vtkImageData()
grid.SetOrigin(0, 0, 0) # default values
grid.SetSpacing(dx, dx, dx)
grid.SetDimensions(5, 8, 10) # number of points in each direction
# print grid.GetNumberOfPoints()
# print grid.GetNumberOfCells()
array = vtkDoubleArray()
array.SetNumberOfComponents(1) # this is 3 for a vector
array.SetNumberOfTuples(grid.GetNumberOfPoints())
for i in range(grid.GetNumberOfPoints()):
array.SetValue(i, 1)
grid.GetPointData().AddArray(array)
# print grid.GetPointData().GetNumberOfArrays()
array.SetName("unit array")