Python VTK клип / вырезать коллекцию самолетов с ограничительной рамкой - PullRequest
0 голосов
/ 15 сентября 2018

Действие

Чтобы связать / обрезать / вырезать набор (бесконечных) плоскостей (представленных как нормаль и точка или уравнение плоскости) в ограничивающую рамку / объем.

Попытка

# `planes_data` (a Pandas dataframe containing centroid and normal vector for each plane)

planes = vtk.vtkPlaneCollection()

for centroid, normal in zip(planes_data.centroid.tolist(), planes_data.normal_vector.tolist()):
    plane=vtk.vtkPlane()
    plane.SetOrigin(centroid[0],centroid[1],centroid[2])
    plane.SetNormal(normal[0],normal[1],normal[2])
    planes.AddItem(plane)

# `bounds` is an array (2*3) containing min_XYZ and max_XYZ 

bounding_box = vtk.vtkPlanesIntersection()
bounding_box.SetBounds(bounds[0,0],bounds[1,0],bounds[0,1],bounds[1,1],bounds[0,1],bounds[1,1])

clipper = vtk.vtkClipPolyData()
clipper.SetInputConnection(planes_vtk)
clipper.SetClipFunction(bounding_box)
clipper.GenerateClippedOutputOn()

# but apparently clipper requires different InputConnection

Проблема

Я думаю, что функциональность может быть в Python VTK, однако из-за того, что документально подтверждена толькопримеры (https://lorensen.github.io/VTKExamples/site/Python/) Я не могу понять, как это сделать правильно.

...