Universal Robots Forum

Importing coordinates/points from CAD


Is there a way to import points or coordinates from a CAD model to a UR program? I’m the integrator in a welding project where the robot will make 210 spot welds on each side of a battery cell package. I have all the positions for the welds in CAD. Is there a way to import these points as coordinates for the UR, so I don’t have to manually enter all the positions by measuring in the CAD model (which I started doing)?


Hi @tor ,

We have post processor plugins available for Fusion360 and Solidworks that allows Gcode generated in these packages to be interpreted by the e-Series robot controller. See below for FAQ.


It’s intended for whole paths, but it should also be a fairly convenient way to handle your spot weld points too. I’m not sure if 210 toolpath nodes in a single program would work, but at the very least you could use it to move the robot to the appropriate points and then save them as standard waypoints.

1 Like

I have tried that in Fusion 360 actually. It does work, but I can’t figure out how to match my plane in UR with the coordinate system of the URscript file, since the only setting for the coordinate system I can do in Fusion is the one below, which is only one point and not the three needed to set up a working plane.

I assume you’re using CB3 as you’re exporting URScript? If you’re on e-Series use gcode format instead, it’s much more convenient as you can move the PCS on the fly.

In CB3 case, if you assign your feature frame to a variable in a polyscope program, you will get the resulting feature frame that’s calculated from the 3 points (which is also in pose format). Use those values as your PCS in 360 and it should work.

I am using an e-series actually… and with the Toolpath URCap it was easy to set up the PCS as you said!

However, now that I have the robot moving to the correct positions I want to make them into waypoints. The task is to make 315 spot welds with the robot, and I have all the positions in CAD. But now I realised that even though I can make robot go to all the locations, it will be very time consuming as I have to restart the gcode everytime I make a new waypoint.

Do you have any suggestions to how I can make waypoints of these 315 positions without having to manually write the coordinates for each of them?

Since I have the coordinates for all the points, can I copy paste them into my UR program on my desktop somehow?

Hi @tor ,

the easy way would be to copy the gcode to an excel sheet (VS Code has an UR script plugin if you want something more professional) and re-shape it to something like:

global wp_1 = p[0,0,0,0,0,0]
global wp_2 = p[x,x,x,x,x,x]

then copy again to a text editor (notepad) and save as a .script file in the robot program folder. In that way you can call it as a script from the main welding program to initialize all the waypoints at once.

Also you will have to create another script to call each waypoint on a Move command, or you can create a new script that contains all the moves but you will lose the instruccion execution tracking on the screen.

Best regards,

going on on this idea i am working on a similar idea.
i have an array called “positions” and this array is filled with positions i want my welding torch to move to.
i fill the array with function Position[i]=get_actual_tcp_pose()

the array then is filled wit positions= [p[x,x,x,x,x,x],p[x,x,x,x,x,x],p[x,x,x,x,x,x],p[x,x,x,x,x,x]]

then to move to these positions i use:
movej(Position[i], a=1,v=1,t=o,r=0)

in this order you dont need to name all the waypoints.

Best regards,

Hi @Corne ,

Yes, you can make a list with poses, but I remember there is a limit to the lenght of the list.

If my memory doesn’t fail the limit is near 33 items and in this project he’s using more than 300 points, so he won’t be able to load them on the same list.

But there is another thing about your procedure that I don’t understand, when you fill the list with poses (lets assume you are running a loop) you need to go first to each position to get the actual tcp pose, or am i missing sth?

Best regards,

hi @anibal.m.hillier,

oewhh thnx for the information did not thought about that!

of course the aplication is a lot more complicated than that.
but for your picture i need the cobot in freedrive mode and the operator wil go to the desired welding location and save the location.
then the robot will take control and with touch sensing the product to find the seam.
after that calculations are done for the right orientation and location.
then cobot has to weld and walk trough the waypoints. for futher details i hope to finish the biggest part next week.

but back to the topic I needed a easy way for my calculations to write away and call waypoints i found this by calling the list positions.

for the different weld seams i can easily rewrite my variable.
for teaching

and when calculating

calculate weld 1
Weld_1 =positions
calculate weld 2
Weld_2 =positions

and for welding itself
movej(Position[i], a=1,v=1,t=o,r=0)

hope you get the point why i used a list otherwise just send me a message to keep the forum clean :slight_smile:

Kind regards,

Hello again and thank you for your replies.

The method I ended up using for programming the 300 weld spots was to make a NC program in Fusion where the weld spots are drill holes. The positions have a certain dimension between them so by looking at the G-code from the NC-file I could then manually enter the coordinates on the teach pendant for the first position and then jog it to the next position (+3 X - 3Y etc.). By also having the same PCS in fusion as on the robot I could then check that the coordinates where matching.

It ended up being an OK solution even tho I had to do some monotonous work. It took me roughly 2 hours to set up waypoints for the 300 positions, so not too bad. Hopefully they all came out right so I don’t have to repeat the process :wink:


1 Like