docs: def mesh(self, mesh_size=1, extra_height=0.1, edge=True, attach=True):
          """
          Generates a set of points distributed in a mesh that covers the 
  		whole Place and computes their height.
          
          Generates a xy mesh with a given mesh_size in the 
          Place.surface's domain and computes the Surface's height for the
          nodes. This mesh is alligned with the main directions `x` and 
          `y`.
          
          :param mesh_size: distance between points.
          :type mesh_size: float
          :param extra_height: Adds an extra height (z value) to the
              resulting points.
          :type extra_height: float
          :param edge: If True, consider the points in the Polygon's edge
              inside the Polygon.
          :type edge: bool
          :param attach: If True, stores the computed points along with
              the Place's set of points.
          :type attach: bool
          :returns: (x, y, z)
          :rtype: ndarray
          """
          # Mesh
          a, b = self.get_domain()
          a -= 2*mesh_size # extra bound
          b += 2*mesh_size
          x_mesh = np.arange(a[0], b[0], mesh_size)
          y_mesh = np.arange(a[1], b[1], mesh_size)
          x, y = np.meshgrid(x_mesh, y_mesh)
          xy = np.array([x.ravel(), y.ravel()]).T
          
          # Compute and store
          xyz = self.get_height(xy, edge=edge, attach=attach,
                                extra_height=extra_height)
          if not attach: return xyz