1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
#!/usr/bin/env python
from vtkmodules.vtkCommonCore import vtkUnsignedCharArray
from vtkmodules.vtkCommonDataModel import vtkDataSetAttributes
from vtkmodules.vtkFiltersParallel import vtkRemoveGhosts
from vtkmodules.vtkFiltersSources import (
vtkCellTypeSource,
vtkDiskSource,
)
import sys
def CheckFilter(inputDS):
numOrigCells = inputDS.GetNumberOfCells()
ghostArray = vtkUnsignedCharArray()
ghostArray.SetNumberOfTuples(numOrigCells)
ghostArray.SetName(vtkDataSetAttributes.GhostArrayName())
ghostArray.Fill(0)
inputDS.GetCellData().AddArray(ghostArray)
removeGhosts = vtkRemoveGhosts()
removeGhosts.SetInputDataObject(inputDS)
removeGhosts.Update()
outPD = removeGhosts.GetOutput()
if outPD.GetNumberOfCells() != numOrigCells:
print("Should have the same amount of cells but did not", outPD.GetNumberOfCells(), numOrigCells)
sys.exit(1)
ghostArray.SetValue(0, 1)
ghostArray.Modified()
removeGhosts.Modified()
removeGhosts.Update()
if outPD.GetNumberOfCells() != numOrigCells-1:
print("Should have had one less cell but did not", outPD.GetNumberOfCells(), numOrigCells)
sys.exit(1)
# =================== testing polydata ========================
disk = vtkDiskSource()
disk.SetRadialResolution(2)
disk.SetCircumferentialResolution(9)
disk.Update()
CheckFilter(disk.GetOutput())
# =================== testing unstructured grid ========================
cellTypeSource = vtkCellTypeSource()
cellTypeSource.SetBlocksDimensions(4, 5, 6)
cellTypeSource.Update()
CheckFilter(cellTypeSource.GetOutput())
print("SUCCESS")
sys.exit(0)
|