Paraview Python - 对servermanager.Fetch()的反向操作?

时间:2013-12-09 12:07:47

标签: python vtk paraview

我正在使用Paraview和Python Shell,我想修改一些坐标。使用阅读器打开所考虑的数据,新坐标保存为txt。我通过使用Fetch() - 例程然后修改它来从阅读器获取网格 - 但我的问题是:我可以以某种方式“返回”现在更改的网格到reader-object然后Show()它吗?

以下是目前使用的代码:

from paraview import simple
from paraview.vtk import *
import numpy as np

reader=simple.LSDynaReader(FileName='/home/test.d3plot')
reader.UpdatePipeline()
simple.Show(reader)

coord=np.loadtxt('/home/coord.dat')

pts=vtkPoints()
arr=vtkFloatArray()
arr.SetNumberOfComponents(3)

arr.SetVoidArray(coord,14766*3,1)
ug=vtkUnstructuredGrid()

#the data to be modified is a vtkUnstrucuredGrid in a vtkMultiBlockDataset
ug.ShallowCopy(simple.servermanager.Fetch(reader).GetBlock(84))
pts.SetData(arr)
ug.SetPoints(pts)

如何让更改现在可见? 任何帮助,将不胜感激!

2 个答案:

答案 0 :(得分:1)

ParaView不是为此设计的,因此不提供完全相同的机制。如果要在Python中转换数据,请查看使用可编程过滤器(http://www.paraview.org/Wiki/Python_Programmable_Filter)。

答案 1 :(得分:0)

我有点迟,但在寻找自己的How to add a custom array to a polydata in paraview?时我发现了这个问题。我最后用numpy.savetxt将数据导出为csv并再次读取新的csv