使用存储在 vtkDataArray 中的数据填充 vtkDataSet(vtkStructuredGrid)?

Populate a vtkDataSet(vtkStructuredGrid) with data stored in a vtkDataArray?

我正在使用结构化和非结构化网格。 我有一个 3D 网格,就像这样。 我希望每个单元格都有一个属性向量。

所以,如果我有一个 vtkDataArray(例如 vtkDenseArray)。对于每个单元格:

如何使用存储在 dataArray 中的数据填充 vtkStructuredGrid?

在 python 我会这样做:

import vtk,math

sg = vtk.vtkStructuredGrid()

n = 6
sg.SetDimensions([n,n,n])

vec = vtk.vtkFloatArray()
vec.SetNumberOfComponents(3)

pts = vtk.vtkPoints()

for kx in range(n):
    for ky in range(n):
        for kz in range(n):
            pts.InsertNextPoint(kx*0.1,ky*0.1,kz*0.1)
for kx in range(n-1):
    for ky in range(n-1):
        for kz in range(n-1):
            vec.InsertNextTuple([math.cos(ky*0.05*math.pi),
                                 math.sin(kx*0.05*math.pi),0.1*kz])

sg.SetPoints(pts)
sg.GetCellData().SetVectors(vec)

w = vtk.vtkXMLStructuredGridWriter()
w.SetInputData(sg)
w.SetFileName('sgrid_cd.vts')
w.Write()

我认为在 c++ 中使用 vtkDenseArray 不会有任何不同。