Hi,
It seems that hidden cells are removed when using vtkExtractSelection()
with VTK 9.4. The MRE creates an 8-cell grid, hide cell 0 and 1, then extracts all cells except cell 7, so the output mesh should have 7 cells. With VTK 9.3, it returns 7 cells, but VTK 9.4 returns 5 cells.
import vtk
# Create a structured grid
x = vtk.vtkDoubleArray()
y = vtk.vtkDoubleArray()
z = vtk.vtkDoubleArray()
for i in range(3):
x.InsertNextValue(i)
y.InsertNextValue(i)
z.InsertNextValue(i)
rgrid = vtk.vtkRectilinearGrid()
rgrid.SetDimensions(3, 3, 3)
rgrid.SetXCoordinates(x)
rgrid.SetYCoordinates(y)
rgrid.SetZCoordinates(z)
sgrid = vtk.vtkRectilinearGridToPointSet()
sgrid.SetInputData(rgrid)
sgrid.Update()
mesh = sgrid.GetOutput()
# Hide cells 0 and 1
arr = [0] * 8
arr[0] = vtk.vtkDataSetAttributes.HIDDENCELL
arr[1] = vtk.vtkDataSetAttributes.HIDDENCELL
vtk_arr = vtk.vtkUnsignedCharArray()
vtk_arr.SetName(vtk.vtkDataSetAttributes.GhostArrayName())
vtk_arr.SetNumberOfComponents(1)
vtk_arr.SetNumberOfTuples(8)
for i in range(len(arr)):
vtk_arr.SetValue(i, arr[i])
mesh.GetCellData().AddArray(vtk_arr)
# Extract cells 0 to 6
selectionNode = vtk.vtkSelectionNode()
selectionNode.SetFieldType(vtk.vtkSelectionNode.CELL)
selectionNode.SetContentType(vtk.vtkSelectionNode.INDICES)
ids_array = vtk.vtkIdTypeArray()
ids_array.SetNumberOfComponents(1)
ids_array.SetNumberOfTuples(7)
for i in range(7):
ids_array.SetValue(i, i)
selectionNode.SetSelectionList(ids_array)
selection = vtk.vtkSelection()
selection.AddNode(selectionNode)
extract_sel = vtk.vtkExtractSelection()
extract_sel.SetInputData(0, mesh)
extract_sel.SetInputData(1, selection)
extract_sel.Update()
assert extract_sel.GetOutput().GetNumberOfCells() == 7