code: def split(mesh,
            only_watertight=True,
            adjacency=None,
            engine=None):
      
  
      if adjacency is None:
          adjacency = mesh.face_adjacency
  
      # if only watertight the shortest thing we can split has 3 triangles
      if only_watertight:
          min_len = 3
      else:
          min_len = 1
  
      components = connected_components(edges=adjacency,
                                        nodes=np.arange(len(mesh.faces)),
                                        min_len=min_len,
                                        engine=engine)
      meshes = mesh.submesh(components,
                            only_watertight=only_watertight)
      return meshes
docs: Split a mesh into multiple meshes from face connectivity.
  
      If only_watertight is true, it will only return watertight meshes
      and will attempt single triangle/quad repairs.
  
      Parameters
      ----------
      mesh: Trimesh
      only_watertight: if True, only return watertight components
      adjacency: (n,2) list of face adjacency to override using the plain
                 adjacency calculated automatically.
      engine: str, which engine to use. ('networkx', 'scipy', or 'graphtool')
  
      Returns
      ----------
      meshes: list of Trimesh objects