How to select a hexahedral cell using HardwareSelector

I want to use vtkhardwareselector to get the hexahedral cell id in unstructuredgrid, so I found a problem after converting unstructuredgrid to polydata. The cell id of the three faces of the hexahedral cell in the corner is different. Is there any way to correctly extract the hexahedron? To ensure that all face ids of a hexahedral cell are the same, just like in paraview. And The reason for not using vtkcellpicker is that it is very slow.


hexahedronGrid = vtk.vtkUnstructuredGrid()

hexahedronGridMapper = vtk.vtkDataSetMapper()
hexahedronGridActor = vtk.vtkActor()

CellPickerk can get the original Cell id:

def CellPickerCallback(caller, eventId):
clickPos = iren.GetEventPosition()
x = int(clickPos[0])
y = int(clickPos[1])
picker = vtk.vtkCellPicker()
picker.Pick(x, y, 0, ren1)
iSel = picker.GetCellId()
if -1 != iSel:
print(“Cell ID:” + str(iSel))

It can be seen that the hardware selector did not get the original cell ID.

def hardwareSelectionCallback(caller, eventId):
    clickPos = iren.GetEventPosition()
    x = int(clickPos[0])
    y = int(clickPos[1])
    hardSel = vtk.vtkHardwareSelector()
    hardSel.SetArea(x, y, x + 1, y + 1)
    res = hardSel.Select()
    numNodes = res.GetNumberOfNodes()
    if (numNodes < 1):
        print("No Cell")
        sel_node = res.GetNode(0)
        cellId = sel_node.GetSelectionList().GetValue(0)
        print("CellId:" + str(cellId))

I’m having the same problem using ActiViz 9.2. I’m curious how did you solve the problem