The first problem with LIDAR data is how dirty and unpredictable it is. The data is collected from a low-flying aircraft that samples point heights in a cone below it with a laser ranging system; this means the data you get back is essentially a grid of point heights every metre (or whatever resolution you've got; it varies in quality).

Now, a grid of point heights does not a 3D model make, and more importantly the heights aren't uniform. They jump around a bit as the natural error of laser ranging creeps in, so even a perfectly flat roof will come back as a bumpy mess of heights. That means you have two problems - turning the point cloud into something you can actually feed to a 3D printer, and refining the resulting model so it's not a jagged mess.

The first part - turning the point cloud into a 3D model - is relatively easy, provided you already know some 3D geometry; you just turn all the points into vertices, and then link them with a set of triangle strips to get a pure heightmap. 3D printers want an enclosed ("watertight") model, though, so you then have to make extra polygons down the sides and along the underneath of the heightmap to turn it into a solid tile.

I did this, and immediately ran into two problems: