Python 如何在paraview中将自定义数组添加到polydata?

Python 如何在paraview中将自定义数组添加到polydata?,python,paraview,Python,Paraview,我知道我可以使用计算器过滤器对数组进行操作,但我想执行一些更复杂的计算。我设法在Paraview python shell中实现了这一点,但现在缺少的步骤是再次返回查看器(或将新的polydata保存到文件)。 以下是我到目前为止的情况: polydata = servermanager.Fetch(FindSource("mydataalreadyopeninparaview")) region_size = paraview.vtk.vtkIntArray() region_size.Set

我知道我可以使用计算器过滤器对数组进行操作,但我想执行一些更复杂的计算。我设法在Paraview python shell中实现了这一点,但现在缺少的步骤是再次返回查看器(或将新的polydata保存到文件)。 以下是我到目前为止的情况:

polydata = servermanager.Fetch(FindSource("mydataalreadyopeninparaview"))
region_size = paraview.vtk.vtkIntArray()
region_size.SetNumberOfComponents(0)
region_size.SetName("regionsize")
for i in range(polydata .GetNumberOfPoints()):
   region_size.InsertNextValue(somecomputedvalue)
polydata.GetPointData().AddArray(region_size)

如何在paraview管道中“导入”我新创建的数据?

更好地处理管道的方法是使用可编程过滤器。(相关:)

要将新的polydata保存到文件,请执行以下操作: (在导入所有ctk模块时发现)

更“粗略”的方法是使用numpy.savetxt将数据导出为csv,然后读取csv并应用TableToPoints过滤器或Python脚本


当客户端和服务器共享相同的内存空间(与内置服务器共享)时,可以使用Producer和GetClientSideObject,如下所述,但我还没有尝试过,更好的方法是使用可编程过滤器将数组添加到输入数据集中。在ParaView 4.1中,可以将以下脚本添加到Programmager筛选器的属性面板上的脚本中

polydata = output
array = vtk.vtkIntArray()
array.SetNumberOfComponents(0)
array.SetName("regionsize")
for i in range(polydata .GetNumberOfPoints()):
    array.InsertNextValue(somecomputedvalue)
polydata.GetPointData().AddArray(array);
polydata = output
array = vtk.vtkIntArray()
array.SetNumberOfComponents(0)
array.SetName("regionsize")
for i in range(polydata .GetNumberOfPoints()):
    array.InsertNextValue(somecomputedvalue)
polydata.GetPointData().AddArray(array);