I believe this is a tricky problem: both columns and beams may not be "well behaved" solids, like a simple bar, but can be in L or I or U shapes, or many others. So the intersection point can be on any face.
Assuming a complex scenario, you may first need to find if both elements intersect somehow (see a sample here on how find intersection bounding box). Now that 2 elements are intersecting, for each face, call Face.Intersect to all faces on the other element that are close. If the face intersect, get each edge/curve and call against curves on the other solid. That should return XYZ points that you're looking for. The closest point to the actual node (intersection point of the Analytical Model) should be what you originally asked.
Sorry I don't have examples and cannot test this, but sounds reasonable :-)