ParaView可编程滤波器用于轮廓

时间:2017-09-28 18:32:24

标签: python paraview

我正在尝试创建一个可编程滤波器来提取等值面。我知道我可以手动输入多个Isosurfaces并通过一个过滤器获取所有这些Isosurfaces。问题是,我必须手动输入它们。在我的用例中,我有一堆我想要使用的isovalues,因此手动输入它们有点乏味。

我尝试过使用可编程滤波器,但我对我得到的数据格式感兴趣。

这是我到目前为止所得到的:

pdi = self.GetPolyDataInput()
pdo =  self.GetPolyDataOutput() 
c = vtk.vtkContourFilter()
c.SetInputConnection(pdo)
c.SetValue(0, 0.01)
c.Update()
self.GetOutput().ShallowCopy(c.GetOutput())

问题是,pdo是“None”,即我没有PolyData。当我使用 pdo = self.GetOutput()时,我得到一个 vtkImageData 对象。这不适用于ContourFilter的InputConnection。

我理想的解决方案是剪切代码,我只需要在值列表中复制这些值的渲染isosurfaces,最好是作为不同的对象,所以我可以为它们着色并从当前的RenderView中添加/删除它们

我正在使用原始数据作为输入

1 个答案:

答案 0 :(得分:1)

您可以使用Python shell执行此操作。单击“管道浏览器”中的“轮廓”对象。然后,打开Python shell(Tools - > Python Shell)。在shell中执行以下Python代码:

contour = GetActiveSource()
contour.Isosurfaces = [100.0, 200.0, 300.0]