我想在应用集成变量过滤器后使用Python Shell访问U的结果。这很容易手动完成,但我想用Python Shell做这个,因为我的进一步计算要求我做一些数学运算。
要使用Python Shell,我打开Paraview并选择我的网格区域和单元格数组。我按下apply,然后运行Python Shell并运行我的脚本。但是,我得到错误:
Traceback (most recent call last):
File "<string>", line 16, in <module>
AttributeError: 'NoneType' object has no attribute 'GetValue'
这是我正在使用的脚本:
import paraview.simple as pvs
data = pvs.Wavelet()
my_slice = pvs.Slice(Input=data)
my_slice.SliceType = 'Plane'
my_slice.SliceType.Origin = [0.0, 0.0, 0.0]
my_slice.SliceType.Normal = [0.0, 1.0, 0.0]
my_slice.SliceType.Offset = 0.0
my_slice.Crinkleslice = 0
my_slice.Triangulatetheslice = 0
my_slice.SliceOffsetValues = [0.0]
iv = IntegrateVariables(Input=my_slice)
iv.UpdatePipeline()
data = servermanager.Fetch(iv)
numPoints=data.GetNumberOfCells()
print numPoints
U10=data.GetCellData().GetArray("U1").GetValue(1) # This is the line no. 16
print U10
我做错了什么。我检查了谷歌以获得一些建议,但我无法找到我的错误。你能帮我纠正一下吗?谢谢。
编辑解决方案:
我解决了我的问题并稍微更新了我的代码。我想为未来的读者编辑我的问题。以下代码对我有用:
from paraview.simple import *
disp1OpenFOAM = FindSource('disp1.OpenFOAM')
slice1 = Slice(Input=disp1.OpenFOAM)
slice1.SliceType = 'Plane'
slice1.Crinkleslice = 0
slice1. Triangulatetheslice = 1
slice1.SliceOffsetValues = [0.0]
slice1.SliceType.Origin [0.0, 0.0023, 0.00]
slice1.SliceType.Normal [0.0, 1.0, 0.0]
integrateVariables1 = integrateVariables(Input=slice1)
DataSliceFile = paraview.servermanager.Fetch(integrateVariables1)
numCells = DataSliceFile.GetNumberOfCells()
U1 = [ ]
for x in range(numCells):
U1.append(DataSliceFile.GetCellData().GetArray('U1').GetValue(x))
print U1