0

我正在尝试mygrid使用 vtkCutter 在 3D 字段(vtkStructuredGrid 或 vtkUnstructuredGrid)中提取 1D 线。一种肮脏的方法是使用 vtkPlane 执行第一个 vtkCuttermyplane1并使用 vtkPlane 将另一个 vtkCutter 应用于输出myplane2。该解决方案似乎可行,但我想做的是使用 vtkImplicitBoolean 创建实际线,然后仅应用一个具有此功能的 vtkCutter 但我不确定此 vtkImplicitBoolean 是如何工作的。显而易见的事情是:

myline = vtk.vtkImplicitBoolean()
myline.SetOperationTypeToIntersection()
myline.AddFunction(myplane1)
myline.AddFunction(myplane2)

cutter = vtk.vtkCutter()
cutter.SetCutFunction(myline)
cutter.SetInput(mygrid)
cutter.Update()
line = cutter.GetOutput()

但这并没有返回我期望的结果:输出是由两个半平面组成的 2D 切割......我试图改变布尔运算(联合,差异)但似乎没有任何效果!

4

1 回答 1

1

似乎 vtkCutter 只能将您的对象尺寸减小 1:3D 到 2D 或 2D 到 1D。vtkCutter 文档说:In VTK, cutting means reducing a cell of dimension N to a cut surface of dimension N-1.

这就是为什么连续平面切割有效而双平面切割无效的原因。

于 2013-01-12T13:47:36.180 回答