code: def Cube(
      center=(0.0, 0.0, 0.0),
      x_length=1.0,
      y_length=1.0,
      z_length=1.0,
      bounds=None,
      clean=True,
  ):
      """Create a cube.
  
      It's possible to specify either the center and side lengths or
      just the bounds of the cube. If ``bounds`` are given, all other
      arguments are ignored.
  
      .. versionchanged:: 0.33.0
          The cube is created using ``vtk.vtkCubeSource``. For
          compatibility with :func:`pyvista.PlatonicSolid`, face indices
          are also added as cell data. For full compatibility with
          :func:`PlatonicSolid() <pyvista.PlatonicSolid>`, one has to
          use ``x_length = y_length = z_length = 2 * radius / 3**0.5``.
          The cube points are also cleaned by default now, leaving only
          the 8 corners and a watertight (manifold) mesh.
  
      Parameters
      ----------
      center : sequence[float], default: (0.0, 0.0, 0.0)
          Center in ``[x, y, z]``.
  
      x_length : float, default: 1.0
          Length of the cube in the x-direction.
  
      y_length : float, default: 1.0
          Length of the cube in the y-direction.
  
      z_length : float, default: 1.0
          Length of the cube in the z-direction.
  
      bounds : sequence[float], optional
          Specify the bounding box of the cube. If given, all other size
          arguments are ignored. ``(xMin, xMax, yMin, yMax, zMin, zMax)``.
  
      clean : bool, default: True
          Whether to clean the raw points of the mesh, making the cube
          manifold. Note that this will degrade the texture coordinates
          that come with the mesh, so if you plan to map a texture on
          the cube, consider setting this to ``False``.
  
          .. versionadded:: 0.33.0
  
      Returns
      -------
      pyvista.PolyData
          Mesh of the cube.
  
      Examples
      --------
      Create a default cube.
  
      >>> import pyvista as pv
      >>> mesh = pv.Cube()
      >>> mesh.plot(show_edges=True, line_width=5)
  
      """
      src = _vtk.vtkCubeSource()
      if bounds is not None:
          if np.array(bounds).size != 6:
              raise TypeError(
                  "Bounds must be given as length 6 tuple: (xMin, xMax, yMin, yMax, zMin, zMax)"
              )
          src.SetBounds(bounds)
      else:
          src.SetCenter(center)
          src.SetXLength(x_length)
          src.SetYLength(y_length)
          src.SetZLength(z_length)
      src.Update()
      cube = wrap(src.GetOutput())
  
      # add face index data for compatibility with PlatonicSolid
      # but make it inactive for backwards compatibility
      cube.cell_data.set_array([1, 4, 0, 3, 5, 2], "FaceIndex")
  
      # clean duplicate points
      if clean:
          cube.clean(inplace=True)
  
      return cube
  
imports: from itertools import product
  import numpy
  import pyvista
  from pyvista.core import _vtk_core
  from .arrays import _coerce_pointslike_arg
  from .geometric_sources import ConeSource, CylinderSource, MultipleLinesSource, Text3DSource, translate
  from .helpers import wrap
  from .misc import check_valid_vector
label_desc: Use image node_id 11 for calling a global function with example usage: Cube(center, x_length, y_length, z_length, bounds, clean) and returns: cube