How do I snap a vertex along a local axis? If I'm trying to move a vertex along any axis other than global X Y or Z, it doesn't snap to another line or face (at least not in a useful way). For example, this is what I want:



But trying to snap to a vertex results in this:



And snapping to an edge results in this:


The problem is that when I'm moving a vertex along a local axis, the snapping also uses the local axis. I'd like to move it along a local axis but use a global axis for the snapping.

EDIT: To explain my use case a bit; I do a lot of modeling for mechanical parts, and this situation comes up frequently. I have found 2 ways to accomplish this, but they are both fairly cumbersome. 

One is to use a shrinkwrap modifier, but that requires creating a vertex group, setting up the modifier, and in some cases creating a new object to use for the target since the the object I'm wanting to snap to doesn't necessarily lie on the path I'm moving the vertex.

The other is to extrude the vertex beyond the point I want to snap it to and then use a boolean operation to clip the mesh. This one is a fairly bad solution though since a boolean operation requires the mesh to be manifold, and it often does unpredictable things.

The shrinkwrap method is the least painful method I've found, but I'd really like a way to do this simply and quickly, just like snapping a vertex in any other scenario.
Look at TinyCAD, aside the for me only downside that the edges need to be in the same mesh, it should be the perfect solution for you. It comes with Blender and can be activated in the preferences.

In your case i then would:


Create a duplicate of the edge from the lower object with Shift+D
Leave it in place by pressing RMB
Separate by selection with P press Enter to accept the first choice.
Go in Object Mode and select the new object and the upper object
Join those objects with Ctrl+J
Now you select the joined object, go in Edit Mode and use the "V2X - Vertex at intersection" function of TinyCAD in the RMB menu.
You get a new vertex at the intersection, which you can then use to merge the corner of the upper object on.


As i mentioned, the add-on has the drawback that it needs you to join meshes, so i forked the add-on and adjusted the V2X function, if you have more of those situations it might be interesting for you to check it out.
My forked version got merged, so here the link to the original repository.
TinyCAD/b28branch

Here a little explanatory visual:



This version is for Blender 2.8+
You can replace the files in the "scripts\addons\mesh_tiny_cad" folder of your Blender installation. I recommend to make a backup of the files first.