Rotate object so axis is normal to surface

Is there any (easy) way to rotate an object so it’s local axis is the same (or parallel) to the normal of a second object’s vertice? I have an object I want to lay flat on a terrain mesh. I can rotate it by eye, that that’s pretty time consuming when I have a lot of objects I need to edit. Is there an easier / faster way?

Try using some of the snapping options.
Example demo
Other ways are using custom transform orientations and a method of aligning the view and adding an empty, but snapping is the simplest.

Looks like the solution, but what keystroke are you using to make it snap? I set the snap settings as in the video, but when I grab the object it doesn’t align with the face.

Hold the Ctrl key down to snap

Got it, just like grid snap. I’ve got a hundred or so objects that need to be oriented with the surface of a terrain. The snap function gets me close, but I still need to tweak it. Any scripts that might do this? I tried one of Harkyman’s scripts (worked with 2.48 only though) but it didn’t rotate the object to the normal. Any other ideas?

Edit - It’s going a lot faster than I thought. I found that I wasn’t using the dragging cursor properly which was effecting what it rotated in relation to.