Cast ray from the cursor and get the index of the hit face
regarding "but getting the feeling that there's more going on there than I need"

This is too vague, you didn't state what you need.

There is Scene.ray_cast - which you can use to ray-cast into the entire scene's visible objects, but this doesn't expose access to the face thats hit. (only the point of intersection &amp; the normal)

In general, no, this can't be further simplified. you need to.


Get the mouse coordinates from an Event.
Get the RegionView3D from the context.
Calculate a point-of-origin from the viewport (not always obvious with orthographic projections)
Convert the mouse coordinates into a view-vector (using view3d_utils).
loop over all objects you want to ray cast.
convert the ray origin and direction into the object's local-space.
run the ray-cast function on a selection of objects.
find the closest result by shortening the ray each time.


Of course you can write your own function to handle all this, and just re-use. But there are many decisions involved in which objects are used, and how far to cast the ray, weather to use the views near-clip to offset the origin or not... etc.

If you don't need dupli-object support the script could be simplified to loop over scene-objects (but not duplicators).