2013-12-09 74 views
0

我使用Paraview和Python Shell,我想修改一些座標。所考慮的數據使用讀取器打開,新的座標保存爲txt。我通過使用Fetch() - 例程獲取網格,然後對其進行修改 - 但是我的問題是:我能否以某種方式將現在更改的網格「返回」到讀取器對象,然後顯示()它?Paraview Python - 對servermanager.Fetch()的反向操作?

這是迄今爲止使用的代碼:

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) 

我怎樣才能讓現在的變化可見? 任何幫助,將不勝感激!

回答

1

ParaView不是爲此設計的,因此不提供完全相同的機制。如果您想用Python轉換數據,請考慮使用可編程濾波器(http://www.paraview.org/Wiki/Python_Programmable_Filter)。

+0

因此,只是爲了正確理解它 - 通過外部Python腳本/ PVPython無法訪問這些可編程過濾器的良好機制? –

+0

不,它們是,但是你將不得不在Python腳本中創建可編程過濾器並傳遞另一個「腳本」來完成這項工作。 – Utkarsh