class_docstr: An internal class to manage filters/algorithms for composite datasets.
class_docstr_tok: ["An","internal","class","to","manage","filters\/algorithms","for","composite","datasets","."]
docstr: Compute point and/or cell normals for a multi-block dataset.
docstr_tok: ["Compute","point","and\/or","cell","normals","for","a","multi-block","dataset","."]
code: def _compute_normals(
      self,
      cell_normals=True,
      point_normals=True,
      split_vertices=False,
      flip_normals=False,
      consistent_normals=True,
      auto_orient_normals=False,
      non_manifold_traversal=True,
      feature_angle=30.0,
      track_vertices=False,
      progress_bar=False,
  ):
      """Compute point and/or cell normals for a multi-block dataset."""
      if not self.is_all_polydata:
          raise RuntimeError(
              "This multiblock contains non-PolyData datasets. Convert all the "
              "datasets to PolyData with `as_polydata`"
          )
  
      # track original point indices
      if split_vertices and track_vertices:
          for block in self:
              ids = np.arange(block.n_points, dtype=pyvista.ID_TYPE)
              block.point_data.set_array(ids, "pyvistaOriginalPointIds")
  
      alg = _vtk.vtkPolyDataNormals()
      alg.SetComputeCellNormals(cell_normals)
      alg.SetComputePointNormals(point_normals)
      alg.SetSplitting(split_vertices)
      alg.SetFlipNormals(flip_normals)
      alg.SetConsistency(consistent_normals)
      alg.SetAutoOrientNormals(auto_orient_normals)
      alg.SetNonManifoldTraversal(non_manifold_traversal)
      alg.SetFeatureAngle(feature_angle)
      alg.SetInputData(self)
      _update_alg(alg, progress_bar, "Computing Normals")
      return _get_output(alg)
  
file_path: pyvista/pyvista/core/filters/composite.py
imports: import numpy
  import pyvista
  from pyvista.core import _vtk_core
  from pyvista.core.filters import _get_output, _update_alg
  from pyvista.core.filters.data_set import DataSetFilters
  from pyvista.core.utilities.helpers import wrap
  from pyvista.core.utilities.misc import abstract_class
label_desc: Use image node_id 5 for calling the CompositeFilters obj's underlying member method code with example usage: obj._compute_normals(cell_normals, point_normals, split_vertices, flip_normals, consistent_normals, auto_orient_normals, non_manifold_traversal, feature_angle, track_vertices, progress_bar) and returns: _get_output