Been giving it some thought ... but ...
The imagepoints are not making it any easier.
In theory, you would have to loop through each object, in the loop, loop through its nodes (save obj.imagepointx(loopindex), obj.imagepointy(loopindex) ) , looping through each other object, looping through their nodes: compare val closest > distance(saved.X,saved.Y,obj.imagepointx(loopindex),obj.imagepointy(loopindex) : set val closest distance(saved.X,saved.Y,obj.imagepointx(loopindex),obj.imagepointy(loopindex)
Not friendly on performance I think.
You could perhaps spawn and pin invisible images on the nodes, and use something like pick closest.