Create selection "hotspot" in a footprint?

Quite often, I find that I need a “hotspot” for copying/moving that KiCad fights me on.

For example, in the footprint “PinHeader_2x10_P2.54mm_Vertical”, I want a hotspot dead center. This would be a spot equidistant from pads 9, 10, 11, 12 and has nothing around it at coordinate (1.27, 11.43).

What I often do in other programs is to create a little “L-shaped” corner in Silkscreen (or a mechnical layer), and that corner is enough to create a “hotspot” that I can grab and use for alignment if I select the layer.

Unfortunately, the same trick doesn’t seem to work in KiCad. Am I missing something? Or is there a different workaround?


Just FYI I think that pcb editor will usually grab the 0,0 point of the footprint, as determined by the footprint editor. Does that help at all?

As Bob already wrote, all footprints can be grabbed by their centerpoint. If this does not work for you there can be a few causes.

Maybe you have Footprints turned off in the Selection Filter in the lower right corner (You can then still grab a pad).

There is currently a bug in KiCad concerning snapping. I’m not entirely sure about the details, but I think it calculates a snap point from the nearest grid point from the cursor, and not from the cursor position itself. This bug is abundantly clear if you set the grid to a very coarse value, such as 10mm.

Thanks for supporting my response, but the 0.0 point (which I believe to be the “hotspot”) is often not the center of a footprint. In many cases in my library, the 0,0 point is the center of pin 1. Keep in mind that there are many footprints (for example a horizontally mounted TO220) for which the center of the footprint does not make a lot of sense as the anchor. But…beyond that I plead guilty to being consistently inconsistent as to whether the 0,0 point is pin 1 or the footprint center.

One point: Most of us who are experienced with KiCad have our own footprint libraries. It is usually not difficult to take a footprint and save a copy (in your own library) in which the 0,0 point is wherever you want.

Hacky Solution:
Since I can grab a “pad” correctly, I created a circular “SMD Aperture” pad on the silkscreen layer at the center point. This allows me to grab the center of the footprint.

Using the footprint I mentioned as reference …

I can grab the hotspot of any of the pads and move the footprint, and it works fine. I can rotate or translate the footprint accurately around that grab.

What I cannot grab is an end or center of a “line” or “circle” drawn in Silkscreen (or any other layer). My selection filter has all the items checked.

Hello @buzmeg

You can change the origin point of the footprint.

The above example has changed the origin from the centre of pin 1 to the centrepoint between pins 2 & 3.
To do this you must first have the connector in a personal library then probably change your grid then use the tool shown with the RH arrow.

Is this what you require?

This example below has moved the axis centre (white cross hairs with the magenta cross) to the right angle of the graphic lines drawn on the silkscreen from the first example.

When you bring this modified footprint from your library onto the PCB, your cursor will be attached to the axis centre.

But that gives me a single selection point.

Referencing the connector I pointed out, if I want to be able to grab between 1&2 on centerline, 9,10,11,12 on centerline, or 19&20 on centerline, I would have to create 3 separate footprints just to be able to grab and align my connectors since you can only have one origin.

This isn’t theoretical. I have to align centerline and outer pin all the time with keyed connectors. So, I need centerline and aligned with Pin 1 for one connector and centerline and Pin 20 for the same connector rotated 180 degrees.

Or, I have a connector like USB 2.0 and I flip it to the other side of the board. If my alignment was Pin 1 pad edge on top, then it’s now Pin 5 pad edge on bottom.

I’ve got a workaround–perhaps this is even the expected solution from the developers. However, “moving the origin” aka “only one user definable hot spot” really isn’t sufficient.

And carrying around two completely identical except for origin footprints is a good way to hose yourself up by accidentally fixing a bug in one and not the other. “DRY” (don’t repeat youself) obtains.

I think you want to upvote:

That issue also has links to similar issues.
I sort of like your hackish workaround to abuse an aperture pad to create extra snap points.

There is also: PCB Editor / Preferences / Preferences / PCB Editor / Editing Options / Magnetic points

KiCad also has a bit complicated use of snap points. Not all snap points are always selectable. You can snap to lines on silk screen, but you indeed not use this directly as an origin point of a move. There is a workaround that is quick enough to be useful (but not ideal). First select your footprint, then right click and select Special Tools / Move with Reference. This lets you select a center or endpoint of a line on the silkscreen layer as your origin point of a move.

OMG!!! I have been looking for this for FOREVER. Any time I have multiple objects selected I can never tell where KiCad is going to anchor the move.

Thanks so much.

Ah, yes my son, wisdom comes with the ages (and experience or experimentation).

It also helps if you have to set some time apart and use that time for no other thing but to browse though the menu’s and try out unknown functions and settings to figure out what they do. Do this on a copy of a project, so you can’t accidentally damage important work.

1 Like

This should be pinned to the top of the forum forever. :slightly_smiling_face:

As much as I do approve of this, as a greybeard, I have also learned over time that using the less documented menu choices is a good way to find youself in a maze of twisty little bugs–all different. :slight_smile:

1 Like

He, he.
That is why you use

And those wonderful tools: “undo a step” , “delete” and “exit without saving”. :slightly_smiling_face: :slightly_smiling_face: :slightly_smiling_face:

Or you put the thing in git and checkout a working version after *&^%$#@! happened.

Also, if you find yourself in a maze of twisty little (or big) bugs then it will be appreciated if you write a bug report for it :slight_smile:

[Shift] and then 8 through 1 is my favorite curse word because it has an exclamation point at the end.

1 Like