0

mygridvtkCutter を使用して 3D フィールド (vtkStructuredGrid または vtkUnstructuredGrid)で 1D ラインを抽出しようとしています。汚い方法は、最初の vtkCutter を vtkPlane で実行myplane1し、出力に別の vtkCutter を vtkPlane で適用することですmyplane2。この解決策は機能しているようですが、代わりに vtkImplicitBoolean を使用して実際の行を作成し、この関数で vtkCutter を 1 つだけ適用することをお勧めしますが、この 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()

しかし、これは私が期待していた結果を返しません: 出力は 2 つの半平面で構成される 2D カットです... ブール演算 (Union、Difference) を変更しようとしましたが、何も機能していないようです!

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 に答える