# Project mesh on surface (or clip face with rotation)

Is there a way I can "project" a mesh on another mesh's surface? I know clipping, but it doesn't align the faces that are touching and doing it manually can be very time consuming.

Is there an integrated function or addon to do such a thing? In case not, can somebody please point me in the right direction to write a py script? (I regularly code in python, just never wrote anything for blender)

Here's a real-world example to explain things graphically:

I want to go from this

to this

1. Enable Snap during transform tool with Shift + Tab. Turn on Face snapping mode, along with Align rotation with the snapping target. Switch snapping part onto the target to Median:
2. Grab your object (cube) to the desired place. Switch Transformation orietnation to Normal (with Alt + space). Turn off snapping and grab your cube along normals so it moves out of the base mesh surface (in my case it was Z axis):