我正在尝试使用vtkCutter在3D字段mygrid
(vtkStructuredGrid或vtkUnstructuredGrid)中提取1D行。
一种肮脏的方法是使用vtkPlane myplane1
执行第一个vtkCutter,并使用vtkPlane myplane2
将另一个vtkCutter应用于输出。
这个解决方案似乎有效,但我想做的是使用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切割...我试图改变布尔运算(Union,Difference)但似乎没有任何效果!
答案 0 :(得分:0)
似乎vtkCutter只能将对象尺寸减小到1:3D到2D或2D到1D。
vtkCutter doc说:In VTK, cutting means reducing a cell of dimension N to a cut surface of dimension N-1.
这就是为什么连续的平面切割有效而不是双面平面。