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

时间:2017-10-02 15:34:29

标签: c++ vtk

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

所以,如果我有 vtkDataArray (例如vtkDenseArray)。对于每个细胞:

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

1 个答案:

答案 0 :(得分:0)

在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应该会有所不同。