Dynamic Components Alignment

Is it possible to press and hold the some key during component movement to view alignment lines in relation to the boundaries of nearby components, or press and hold some other key during component movement to view alignment lines by pads of nearby components, it would be really helpful while placing the components during PCB layout early phases.

When does the component alignment to nearby components matter?

(edit Joan: What is the use case?)

while pcbnew.exe is running, and you try to align a component in reference to another nearby component.

A feature like the one you request is not in kicad.

However you can select the object you want to align plus the reference object then right click -> align and distribute -> select alignment option.

I guess this feature would be good to have in KiCAD.

This not answers my doubts.
You learn all your life. I frequently had to align components to case openings (LEDs, terminal blocks, USB connector,…) but I had never need to align components to other components so I hoped to get some new lesson when it is needed and for what. If I place one 0603 component next to the other one than you can align them without alignment lines so you probably thought about something else. I just wonted to know when it is needed.

I saw this feature in another product, and tried it, it saves your time while there. It is called dynamic alignment, I thought it would be nice to have in KiCAD as well. Being new to KiCAD, I am not aware if a feature is there or not all the time.

May be, but it is still out of my imagination :frowning:

It’s probably not necessary for functionality, but many designers love orderly looks. For example resistors in line if possible.

I have thought about this feature, too. It could be an “alternate grid” where each grid line (horizontal/vertical) would go through a “snapping point”.

2 Likes

I think a feature like this would be an awesome alternative to having a grid for the schematic side. So a very far off future where the schematic is free of the constraints of a grid could benefit from dynamic alignment instead of needing to do it actively.

Actially I was talking about pcbnew, this feature is useless in schematic :slight_smile:

I often use a 3d program (ViaCad) that has this sort of functionality. It remembers the last item you touched and offers highlights when edges or centres of the object you are moving are aligned to the first object. It is quite discrete and could be a helpful alternative guide for arranging components. Having said that, there are extensive options for align / distribute and array structures already available under the RMB.

I wouldn’t say it is useless in schematics. Never underestimate a tiny bit of OCD in trying to keep parts nicely aligned and spaced.

Mentor Xpedition does this really well so much so that if you are placing a bank of resistors it will place visual alignment aids as you are aligning a 3rd so they are all equal

3 Likes

First I was a bit confused. The graphic things in Eeschema we call Symbols, in Pcbnew we call em Footprints.
That said, there are (as always) a few options / workarounds in the current KiCad version.

The very simplest (and therefore my preference) is to use a coarse grid. If you use a grid of for example, 1mm during Footprint placement, then it’s either spot on, or way off. I have a strong tendency to align all THT Footprints on a 0.1" grid, especially connectors in an attempt to make my PCB’s matrix board compatible. None of that “arduino” rubbish.

Second: You can hover over a footprint, press e for Edit, and then copy the “Position X:” an/or “Position Y:” coordinates into a text editor, paper, your head, etc. and the paste the right number in the Footprint you want to align.

Third: You can turn on full screen crosshairs with: Pcbnew / Preferences / Preferences / Pcbnew / Display Options / Cursor Options / (*) Full window crosshair

Forth:
Pcbnew has a “Position Relative to:” function, shortcut [Ctrl + R].

Fifth:
The already mentioned "Align / Distribute** function from the context menu.

Sixth:
You can draw some lines as visual aids on Dwgs.User, or an y of the other User layers.

Seventh:
Just ignore it. SMT pick and placers don’t care, PCB manufacturers don’t care, Your pcb will be put in an enclosure, nobody sees it except you when you’re staring at Pcbnew all day.

Eightthth:
Use 01005 (metric) components. These are so small nobody is able to see them anyway.

Note:
When you move a Footprint, you either grab it by the center of the Footprint, or by the center of one of the pads. Especially for SMT, if you want to align them on the grid, always use the corresponding grab point for all Footprints. (Using center of pad seems most logical).

4 Likes

All in all, I think that visual alignment aids is a good idea in both eeschema and pcbnew, the feature being missing is not a blocking dilemma, rather having this feature is still a good idea. I hope that we reach to an equilibrium balance such that we have less workarounds, I assume it is a matter of time. Workarounds are not a bad thing, but replacing them as time passes by real solutions is the ultimate aim after all, we all want KiCAD to be the best. For those who could not imagine this: https://www.youtube.com/watch?v=d44j43lOw9M

After weekend I came to work with the idea that I probably used the word ‘when’ in context not existing in English language and wonted to explain it here, but I see someone did it for me.
In my (Polish) language word being direct translation of ‘when’ can be used:

  • in time domain (as question or time specification),
  • in situation domain (as question or situation description).

I have used it in the second domain but may be it was not possible to be understood that way in English.
In your language everything seems obvious and you even don’t provide that direct translation word by word can be understood differently.

I all the time understood that we are speaking of situation that if you are moving a component than together with it you have the lines moved all the time with you. But when they apear only when you are aligned with something nearby seems be more useful.

I didn’t understood the real useful of it imagining the 8 bit bus with 8 resistors on it. To have the bus not too distributed you will place those resistors one next to the other - their CrtYd rectangles touches so I see no problem with placing them aligned. So I thought when such lines could be helpful and supposed that only when you try to place them not in order but randomly (may be in the order you get the resistors from first automatic distribution. But in such situation I assumed that if after placing the first resistor and then if placing the last one you can align it with the first but only in one direction so I assumed that at the end you will have to move that last to final position so the fact that you have aligned it in one direction saves you no time.
I had only once the need to place a serie of resistors in the bus. I used 0402 and couldn’t place them in one row as it was too wide.
Here is a part of that PCB:


As you see any help in aligning would be not useful here.

It never happen to me to place such resistors in row so I was asking in what situation the aligning is used.
And if we think of aligning something that could be assumed to be need to align because of PCB user needs (the user interface) - for example a serie od LEDs than I also sow no problem as full screen crosshair do the job. I just didn’t imagined something that is not showed all the time but indicates only when you are aligned. It can have some advantage but to tell you the truth there are much, much more important things to be done (in my opinion) to help in PCB design that this one.

That screenshot triggers my OCD :wink:
I think the left column of resistors could be aligned to the top one and so can the right one. Does it change the functionality? I doubt. Might it look better to certain people? A definite yes.

Whether you can align footprints or not depends on the needs of the design. If you have plenty of room you could align those in your screenshot.

But notice also that I always want and think about generic tools which can be applied in different situations. Footprints are not nearly the only thing which can be aligned. Think about two graphic lines. It would be much easier to draw two lines which have the same end point X coordinate if I could snap to that X-coordinate instead of finding it by trial and error, looking at it carefully.

Often the footprint datasheets give landing patterns so that for example a center point of some pad is aligned with an edge of another pad. Again, this would be much easier if I would have a grid where edges and middle points of existing pads would form the grid.

In the next screenshot I have drawn a grid formed by pad snapping points.

2 Likes

I think there are plans to add parametric tools to the footprint editor so your footprint creation example might be best solved with them (think similar to how the sketch tool of freecad and other such software work)