pyvista.DataSet.cell_neighbors#
- DataSet.cell_neighbors(ind: int, connections: str = 'points') list[int] [source]#
Get the cell neighbors of the ind-th cell.
Concrete implementation of vtkDataSet’s GetCellNeighbors.
- Parameters:
- Returns:
Warning
For a
pyvista.ExplicitStructuredGrid
, usepyvista.ExplicitStructuredGrid.neighbors()
.Examples
>>> from pyvista import examples >>> mesh = examples.load_airplane()
Get the neighbor cell ids that have at least one point in common with the 0-th cell.
>>> mesh.cell_neighbors(0, 'points') [1, 2, 3, 388, 389, 11, 12, 395, 14, 209, 211, 212]
Get the neighbor cell ids that have at least one edge in common with the 0-th cell.
>>> mesh.cell_neighbors(0, 'edges') [1, 3, 12]
For unstructured grids with cells of dimension 3 (Tetrahedron for example), cell neighbors can be defined using faces.
>>> mesh = examples.download_tetrahedron() >>> mesh.cell_neighbors(0, 'faces') [1, 5, 7]
Show a visual example.
>>> from functools import partial >>> import pyvista as pv >>> mesh = pv.Sphere(theta_resolution=10) >>> >>> pl = pv.Plotter(shape=(1, 2)) >>> pl.link_views() >>> add_point_labels = partial( ... pl.add_point_labels, ... text_color='white', ... font_size=20, ... shape=None, ... show_points=False, ... ) >>> >>> for i, connection in enumerate(['points', 'edges']): ... pl.subplot(0, i) ... pl.view_xy() ... _ = pl.add_title( ... f'{connection.capitalize()} neighbors', ... color='red', ... shadow=True, ... font_size=8, ... ) ... ... # Add current cell ... i_cell = 0 ... current_cell = mesh.extract_cells(i_cell) ... _ = pl.add_mesh(current_cell, show_edges=True, color='blue') ... _ = add_point_labels( ... current_cell.cell_centers().points, ... labels=[f'{i_cell}'], ... ) ... ... # Add neighbors ... ids = mesh.cell_neighbors(i_cell, connection) ... cells = mesh.extract_cells(ids) ... _ = pl.add_mesh(cells, color='red', show_edges=True) ... _ = add_point_labels( ... cells.cell_centers().points, ... labels=[f'{i}' for i in ids], ... ) ... ... # Add other cells ... ids.append(i_cell) ... others = mesh.extract_cells(ids, invert=True) ... _ = pl.add_mesh(others, show_edges=True) >>> pl.show()