PCB Editor annoying parts grid centering bug

I have been working on KiCad ever since V4 and there has been this annoying parts misalignment bug that has been haunting PCB Editor all these years, including V8.

The issue appears when you import multiple identical parts and start placing them on your PCB (for example next to each other). Once you move the parts from the original imported position, each part gets misaligned from one another and I always end up doing fine-placement adjustments (or grid corrections). Why cant identical parts all “live” on the same grid when being moved, centered in respect to one another?

Below is a screenshot example of 3 buttons imported and moved on a 1mm grid. When placing them next to each other, they all have different vertical offsets. The square is a reference for grid size and dashes represent misalignment of each of the part.

Am I missing something and there is a setting somewhere to snap center of parts to grid by default?
Could this annoying behavior potentially get corrected in future releases?

I’ve never seen your problem.

When you write “import”, what do you mean: from a Kicad library, a personal library, elsewhere?

What is your OS?

By import I mean “Update PCB from Schematic” button, once the schema is done and I’m ready for the layout, so no duplicates or anything fancy. Does not matter the library, happens with all the parts. Parts just get center-misaligned from one another as soon as you move/rotate them to a new area.

There are probably 5 different ways to quickly fix this, but I just don’t understand why it happens in the first place and needs a fix when everything is moved on the same grid.

You can try these steps to recreate. New project > Schema - add 3 buttons/resistors/whatever. - assign footprint. > PCB editor - update PCB from Schematic > change grid size to 1mm > rotate/move parts to new area one by one and try to place them aligned without fine-fiddling. They are placed off-center from one another most of the time.

Windows 7-10.

I’ll try it out :slightly_smiling_face:

20202020chars.

It seems I am of no use to you. :frowning_face:

This is all I get after Move, Rotate & Mirror.

Hmmm. That’s not fair. Must be something specific to my system I guess!?

I’ll do more experimenting tomorrow and will report back if I find the algorithm that leads to misalignment.

First:

when communicating over a medium such as this forum, try to explain yourself accurately. Post error messages and menu selections literally, to prevent ambiguities and such as here.

Yes. When you start a move, a footprint gets selected by either a pad, or by it’s anchor point, and this depends on whatever is closest to the cursor position when the move is initiated, so when one footprint is grabbed by a pad, and the other by it’s anchor point, they do not align after the move.

The endpoint of a move is also not always a grid point. It depends on: PCB Editor / Preferences / Preferences / PCB Editor / Editing Options / Magnetic Points. It has settings for pads, tracks and graphics. KiCad also has some other snap behavior, for example, it tends to keep the old position as a snap point (which I find annoying, because it makes small moves difficult).

You also have not mentioned what function you use to move. a simple move (with the m shortcut key) moves over the grid and some other snap points. There are also a whole lot of other options to get things aligned, but (Aliggnment tools, move with reference, properties manager) but I guess that is not the question at the moment.

1 Like

I appreciate your input however no need for scolding me over my words choice. I did not pick the best words to describe my situation in the original post but in my first response I have clarified what I meant to say.

1 Like

I had no idea my remarks would be interpreted as scolding. I could interpret your remark just as negative, but I really don’t want to put more energy into such things.

How is your global setting for preferences–>common->Warp mouse to origin of moved object? (my recommendation: enable this checkbox).

Maybe also related: preferences–>pcb editor–>Display options–>snap to grid: always / when shown / never

Are you aware that footprints provide the following grabbing points for moving/manipulating a FP:

  • every individual pad acts as grabbing point
  • the FP anchor acts as grabbing point (this is marked with a thin cross)
  • the geometrical middle of the FP acts as grabbing point

Depending were exactly you initiate the move command Kicad chooses one of these different grabbing points. Especially if a FP is only slightly non-symmetrical there can be unwanted difference between grabbing point 2<–>3

There is also a (long) open bug with choosing the right grabbing point if you work with larger grids, as kicad currently rounds the cursor position to the nearest grid position and only then selects the nearest grabbing point.

1 Like

I’ve seen this tendency with other graphics programs. I find I have to move the part a longer distance the to break the current snap conditions, then move it back.

Doing the move twice is my solution too. It works but needs extra mouse clicks for no apparent reason.

My biggest gripe is probably that I do not understand why this function is implemented at all.

That explains the behavior that I’ve initially called a bug! Turns out it is a feature!

Thank you as it now solves it for me! I was not aware that “grabbing point” would affect the grid alignment and always assumed geometrical center of a footprint serves as a grid anchor, but it is clearly not the case.

It would be great to have this as an option in future releases, to chose whether someone prefers only specific types of grid snapping points or all available.

1 Like

My understanding is,
When the part is within the “snap range” it will obviously “snap” to that location. If you move it within the snap radius it will “snap” back to the original location.

Yes, and this makes it impossible to make a small move (without first putting the part on some far away intermediate location). It still does not explain Why this is implemented? What is the use of snapping to a location were the footprint does not move?

If moving was a mistake, then simply pressing [Esc], or [Ctrl + z] after the move are better options.

Holding CTRL when moving a FP will make it ignore the grid or nearby parts allowing for fine movements.