ParaView 可编程轮廓滤波器

ParaView programmable filter for contours

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

我试过使用可编程过滤器,但我有点卡在我得到的数据格式上。

这是我目前得到的:

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。

我理想的解决方案是截取一段代码,我只需要将这些值的渲染等值面复制到一个值列表中,最好作为不同的对象,这样我就可以给它们上色 add/remove来自当前的渲染视图。

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

您可以使用 Python shell 来做到这一点。单击管道浏览器中的轮廓对象。然后,打开Pythonshell(工具->PythonShell)。在 shell 中执行以下 Python 代码行:

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