[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
Hello,
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()
rd.SetFileName(my_input_vtk_file)
rd.Update()
ug = rd.GetOutput()
f = vtk.vtkConnectivityFilter()
f.SetInputData(ug)
f.SetExtractionModeToLargestRegion()
f.Update()
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
approach:
- 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
limitation
I've found a SetExtractionModeToAllRegions method but I don't understand
how to deal with it:
f.SetExtractionModeToAllRegions()
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
--
Nicolas
More information about the vtkusers
mailing list