code: def booleanOperation(actor1, operation, actor2, c=None, alpha=1,
                       wire=False, bc=None, texture=None):
      
      bf = vtk.vtkBooleanOperationPolyDataFilter()
      poly1 = actor1.computeNormals().polydata()
      poly2 = actor2.computeNormals().polydata()
      if operation.lower() == "plus" or operation.lower() == "+":
          bf.SetOperationToUnion()
      elif operation.lower() == "intersect":
          bf.SetOperationToIntersection()
      elif operation.lower() == "minus" or operation.lower() == "-":
          bf.SetOperationToDifference()
          bf.ReorientDifferenceCellsOn()
      bf.SetInputData(0, poly1)
      bf.SetInputData(1, poly2)
      bf.Update()
      actor = Actor(bf.GetOutput(), c, alpha, wire, bc, texture)
      return actor
docs: Volumetric union, intersection and subtraction of surfaces.
  
      :param str operation: allowed operations: ``'plus'``, ``'intersect'``, ``'minus'``.
  
      .. hint:: |boolean| |boolean.py|_