[vtkusers] How to explicitely get the different regions with ConnectivityFilter?

Nicolas Cedilnik nicolas.cedilnik at inria.fr
Fri Feb 17 08:38:41 EST 2017


I have an unstructured grid with several point data arrays and would 
like to extract the connected regions and their associated data into 
separate files.

I can do that with paraview but I'm struggling to get it done using 
python vtk bindings.

So far I've managed to extract the cells corresponding to the the 
largest region:

rd = vtk.vtkGenericDataObjectReader()
ug = rd.GetOutput()
f = vtk.vtkConnectivityFilter()
out = f.GetOutput()

ug.GetNumberOfCells() # 28396, the original number of cells
out.GetNumberOfCells() # 27740, less cells, looks good

from which I can work something out, but I have two problems with this 
- I'd like to know the indices of the other connected regions
- the `ug` input only has 1 point data array, I believe this is a known 

I've found a SetExtractionModeToAllRegions method but I don't understand 
how to deal with it:
b = f.GetOutput()
b.GetNumberOfCells() # 28396, same as input
b.GetCellData().GetNumberOfArrays() # 0, I would have expected an array 
where the cells where labeled by region number...

All in all, I have two questions:
- How do I use the filter to get the cells labeled by region?
- (less important) Is it possible to read different point data arrays 
with vtk python bindings?

Thanks in advance for your help and advices on how to use vtk properly


More information about the vtkusers mailing list