You could try this approach, which uses one user frame.
Essentially, you define the location of each nest using a position register, then assign the nest location to a common user frame in which to teach points.
1) First, teach a user frame (3-point method is okay) on the first nest (the user frame that's currently active when you do this is not relevant). Record the values X, Y, Z, W, P, and R for this particular nest.
2) Repeat step 1 for each nest. (You can teach using the same user frame each time in step 1 if you want.)
3) Enter the frame data for each nest in an available position register. You need a position register for each nest. If you have four nests, for example, position register 1 could correspond to nest 1, position register 2 could corresond to nest 2, and so on.
4) Create a TP program that will do the motion. If the software you are using has a header where you can specify the user frame to use when recording positions, enter the user frame number there. (Don't use user frame 0, as that is world frame.) Otherwise, go to step 5.
5) In your program, prior to any motion instructions, define the location of the user frame (really, the nest) that you specified in step 4. If you couldn't specify a user frame in step 4, the instruction on line 2 of the program will take care of it (I chose user frame 1 in this example, but use another if you want).
1: UFRAME[1]=PR
2: UFRAME_NUM=1 ;
3: motion instruction...
6) Teach the points in the program--be sure you execute the first two lines in the program before recording any positions (position register x corresponds to nest x, so be sure to records points on nest x.)
After you teach the program, change the position register number (x) in the first line of this example program to cause the program to execute on a different nest (in this example x = 1 for nest 1, x = 2 for nest 2, and so on).