How do I place footprints by inputing the X/Y centerpoint of a model?

Spent most of last evening trying to figure out how to place major components on my PCB by entering the X/Y coords in millimeters.

Unfortunately, I can’t seem to orient the bottom left of my imported board edges to 0,0 so the footprints move to the correct locations.

How can I do this and get everything on the same coordinate system?

The user grid is your friend. No need to enter locations.

I normally just set my grid origin somewhere convenient and work from there. (The coordinate origin can not be moved from the top right corner of the “page” outline)

Another convenient tool is the move exactly tool. (ctrl+m) I am not sure if this tool exists in the default/legacy canvas. Switching canvas is done in the view menu.)

1 Like

Unfortunately, I do need to add locations. I am building a replica Up Front Control Panel (UFC) for my F/A-18C cockpit, and the locations of the displays and switches matter.

It consists of 22x 5x7 matrix displays, a small OLED screen, and a slew of driver ICs, buttons, pots, encoders, and connectors.

I’ve created drawings with SolidWorks of the desired XY locations from 0,0 (oriented to the bottom left of the board, facing the front). Ideally, I’d like to just simply enter the coordinates so all the displays and buttons end up where they need to be.




1 Like

you can export your design to dxf and import it in pcbnew… then use this as a reference for placing parts
or
you can place all your parts referring to the top left corner coordinates (use negative values of y coords), and after having placed all the parts, move the block inside the page…

1 Like

Note: my explanation assumes you are in opengl canvas. (press F11 to activate it)

Most of your components seem to be on some sort of grid (relative to each other). So i doubt that neither the grid trick nor the move exactly trick would help you.

There is also the array functionality in open gl canvas.
You could also play around with python scripting. (Either from within kicad or manipulate your pcb file directly.)

If you really want to enter the coordinates for every component (seem to be a lot of them) by hand, simply press e while your mouse is hovering on top of the footprint or graphical element in question. This opens a dialog where you can enter your stuff manually.


I would suggest you do the following workflow.
After importing the outline (i assume from dxf) move it somewhere convenient using the move exactly tool. (read out the coordinates of the lower left corner via the options dialog. Use move exactly to move it to 0,0 -> will result in your pcb being outside the “page”.)

Lets assume you need to place D1 to coordinates x1 and y1.
with D2, D3, … , Dn relative to this coordinate with dx1, dy1.
If you have your reference on 0,0 simply open the user grid settings and set the new grid origin equal to x1,y1 (y positive points downward) and grid spacing to dx1,dy1.
Select user grid as your active grid (drop down menu in the top tool bar)
Move your parts to the grid points using the M key.

1 Like

Great plan. Thanks @Rene_Poschl. I’ll try that this evening.

:+1:
+1 this would be my suggestion too, I think it is the faster and easier way of manual editing.
Nice project btw, I would love to see their mechanical models integrated and rendered with KiCad :wink:

1 Like

Thanks for all the suggestions all! Got all my location critical components placed, and now for a boatload of caps/resistors tomorrow and to start routing the board. Woo.