Действие
Чтобы связать / обрезать / вырезать набор (бесконечных) плоскостей (представленных как нормаль и точка или уравнение плоскости) в ограничивающую рамку / объем.
Попытка
# `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/) Я не могу понять, как это сделать правильно.