Cross-selecting multiple components between schematic and layout?

Is there any way to select multiple components in eeschema such that the same components become selected in pcbnew?

Cross-selecting individual components between eeschema and pcbnew works nicely, but it would be extremely helpful to do this with multiple components at a time. I am performing initial component placement for a fairly complex design, at the stage where I’m grouping related components together. In Mentor PADS, I would drag-select portions of the schematic in order to get the same components selected within the big pile of unplaced components in the PCB tool, so I could then group those components together as a first step towards placement. In KiCad, I’m resorting to grouping components together one at a time. It’s quite tedious, especially in some analog filters with dozens of discrete components scrambled in the unsorted pile.

So, is there a way to do this in KiCad that I don’t know about yet, or should I consider making a new feature request?

Like the concept… might need to check the v5 roadmap for KiCAD if something like this is on the list?
@cbernardo will probably know about it if it is.

1 Like

As well as drag-select, KiCad also needs multiple mouse selects, like Ctrl-Click, and then Move & Edit should be possible across all valid common items too.

1 Like

Good suggestion about checking the roadmap. I haven’t looked at it.

Multiple-click-selection would also be great. In fact, if I could only pick one, I’d pick the multiple click selection. Drag selection is more convenient for things easily selected with a rectangle, while multiple click selection can select things that are impossible to select accurately with a rectangle.

I manually organized the 300 components on my design today, and it was very tedious! :slight_smile:

Hmm, I can believe that.
You could look into scripts, if you have many repeating cells.
eg if you name the R10*,C10* & R20*,C20* etc you can search for groups.

Below is one example I knocked up that places parts, from externally generated XYRS table
In your case you could use a seed placement of a routed cell, and then clone the XYRS from that, given a Step-repeat

Scripting calls are listed here

import sys
from pcbnew import *
pcb = GetBoard()
RefNm   = ['C1','C2','C3','C4','C5','C6','C7','C8','C9','C10','D1','D2',
RefX    = [ 1150, 500, 1950, 700, 700, 1950, 400, 2100, 2100, 1150, 3535, 3465,
 1575, 3100, 2050, 2050, 400, 3675, 3675, 1400, 1400, 2050, 2050, 750, 750, 650, 2600, 400]
RefY    = [-1000,-1000,-1550,-1700,-1350,-900,-1550,-400,-1800,-1650,-1565,-565,
RefOri  = [ 180, 180, 180, 180, 180, 180, 180, 0, 0, 180, 45, 315,
 0, 90, 0, 0, 0, 255, 105, 0, 0, 0, 0, 0, 0, 0, 0, 90]
RefSide = [True,True,True,True,True,True,True,False,False,True,False,False,
for Idx,Rn in enumerate(RefNm):
  nPart = pcb.FindModuleByReference(Rn)
  nPart.SetPosition(wxPoint(FromMils(RefX[Idx]), FromMils(RefY[Idx])))  # Update XY
  nPart.SetOrientationDegrees (RefOri[Idx])                             # Update Rot
  if RefSide[Idx]!= nPart.IsFlipped():                                  # Current Side <> Reqd Side ? then flip
        nPart.Flip (nPart.GetPosition())

A script-based approach to selecting the parts wouldn’t help me in this particular task. I really need to be able to select multiple parts graphically in the schematic based on my understanding of how they function together, not by anything that can be programmatically inferred from their reference designators or other metadata.

1 Like

I also would greatly appreciate the addition of such an feature to the eeschema <-> pcbnew interaction.

Selecting a group of symbols in eeschema and maybe right click in the pcbnew window “Assemble selected parts here”
would be a nice approach in combination with a keyboard shortcut.

This would be a big help with larger,more complex PCBs and their logical sub systems. Eg making it possible
to group together all IC’s and capacitors of a specific DC-DC witch need to stay close to each other without
manually collecting them one by one.

I’d say you’re praying to the choir here and the devs currently rework eeschema to mirror the improvements of pcbnew to make things like this possible. But it won’t happen within the next 12 months is my best guess.