Я хочу использовать GetCellNeighbors, чтобы узнать ячейки или точки, соединяющиеся с указанной ячейкой. Добавляя код surfPoly.GetCellNeighbors(1,idNbList,cellList)
ниже, vtk ничего не рендерит!
Кто-нибудь, пожалуйста, помогите мне? Благодарю вас заранее!
#!/usr/bin/env python
# -*- coding: cp936 -*-
"""
This example shows how to create an unstructured grid.
"""
import vtk
def main():
colors = vtk.vtkNamedColors()
x = [[0, 0, 0], [1, 0, 0], [2, 0, 0], [0, 1, 0], [1, 1, 0], [2, 1, 0], [0, 0, 1], [1, 0, 1], [2, 0, 1], [0, 1, 1],
[1, 1, 1], [2, 1, 1], [0, 1, 2], [1, 1, 2], [2, 1, 2], [0, 1, 3], [1, 1, 3], [2, 1, 3], [0, 1, 4], [1, 1, 4],
[2, 1, 4], [0, 1, 5], [1, 1, 5], [2, 1, 5], [0, 1, 6], [1, 1, 6], [2, 1, 6]]
pts = [[0, 1, 4, 3, 6, 7, 10, 9], [1, 2, 5, 4, 7, 8, 11, 10], [6, 10, 9, 12],
[8, 11, 10, 14, 0, 0, 0, 0], [16, 17, 14, 13, 12, 15, 0, 0], [18, 15, 19, 16, 20, 17, 0, 0],
[22, 23, 20, 19, 0, 0, 0, 0], [21, 22, 18, 0, 0, 0, 0, 0], [22, 19, 18, 0, 0, 0, 0, 0],
[23, 26, 0, 0, 0, 0, 0, 0], [21, 24, 0, 0, 0, 0, 0, 0], [25, 0, 0, 0, 0, 0, 0, 0],[24,26]]
renderer = vtk.vtkRenderer()
renWin = vtk.vtkRenderWindow()
renWin.AddRenderer(renderer)
iren = vtk.vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)
points = vtk.vtkPoints()
for i in range(0,len(x)):
points.InsertNextPoint(x[i])
ugrid = vtk.vtkUnstructuredGrid()
ugrid.Allocate(3)
ugrid.InsertNextCell(vtk.VTK_HEXAHEDRON, 8, pts[0])
ugrid.InsertNextCell(vtk.VTK_HEXAHEDRON, 8, pts[1])
ugrid.InsertNextCell(vtk.VTK_TETRA, 4, pts[2])
ugrid.InsertNextCell(vtk.VTK_TETRA, 4, pts[3][:4])
ugrid.SetPoints(points)
ugridMapper = vtk.vtkDataSetMapper()
ugridMapper.SetInputData(ugrid)
ugridMapper.ScalarVisibilityOff()
ugridActor = vtk.vtkActor()
ugridActor.SetMapper(ugridMapper)
ugridActor.GetProperty().SetColor(0.1,0.8,0.8)
ugridActor.GetProperty().EdgeVisibilityOn()
renderer.AddActor(ugridActor)
renderer.SetBackground(colors.GetColor3d("Beige"))
renWin.SetSize(640, 480)
surfFilter = vtk.vtkDataSetSurfaceFilter()
surfFilter.SetInputData(ugrid)
surfFilter.Update()
surfPoly = surfFilter.GetOutput()
idList = vtk.vtkIdList()
idNbList = vtk.vtkIdList()
cellList = vtk.vtkIdList()
surfFilter.GetOutput().GetCellPoints(15,idList)
print(idList.GetNumberOfIds())
# The code prevents vtk rendering. #################
surfPoly.GetCellNeighbors(1,idNbList,cellList)
#########################################################
renWin.Render()
iren.Start()
if __name__ == "__main__":
main()