How to copy layout blocks

I have a question similar to: How to copy sections of layout - #5 by jandyman
but the answers in that thread are not working for me.
I am doing my second design in KiCad after using geda for 20+ years, and I wonder if I’m stuck in an old way of thinking. The design is for Parallax Propeller 2, TQFP100 with a ground pad and about 30 bypass caps. I have copied all that, the crystal and serial ROM from the old KiCad layout to the new KiCad layout.

The problem for me is, when I do Tools, Update PCB From Schematic, new copies of those components appear, so the software is not recognizing the things I pasted in. Based on the older article, I have:

  • Redone annotation in Schematic, Tools, Annotate Schematic
  • Fixed all the component names to match the schematic
  • Copied the block to a Standalone PCB session and pulled it back in by File, Append Board
  • Edited the kicad_pcb file and exchanged uuid’s between my component and the one the tool inserts

No matter what, Update PCB From Schematic is always ignoring my copied-in components. I’m trying to avoid hierarchy and plugins for now. How is this supposed to work?

Internally KiCad uses UUID’s to match schematic symbols with footprints on the PCB. If that is broken for some reason (for example manually added parts to the PCB) you can use: Schematic Editor / Tools / Update PCB from Schematic [F8] and then use: Option: [ x ] Re-link footprints to schematic symbols based on their reference designators. As this option explains, this requires that the reference designators are matching. If they are not, then fix that first manually.

Alternatively, you can delete the parts you imported manually, and then place the new footprints on the left over track ends on the PCB.

20 years with gEDA? Gosh. I tried it about 10 years ago (when I switched to Linux permanently), did one or two schematics, but gave up when I discovered the PCB editor was a completely other program with a different design philosophy etc. Then did some evaluation of different programs, adopted KiCad and I’m happy ever since. Just curious, what happened to gEDA? Apparently development ceased years ago, and even the website is dead for some years now.


Edit after re-reading:

I don’t know what you did here exactly. KiCad works in two different modes. Normally you open KiCad’s programs via the project manager, and when you have a project, the schematic and PCB are kept together. If you open the schematic editor or PCB editor directly from your OS (command line, OS menu, etc) then KICad works in “standalone mode”, and there is no connection between the schematic and PCB at all. In “standalone mode” KiCad is not aware of a project.

I was on the mailing list prior to finding Kicad. (I thought it was some ported program to KDE with a K stuck on the front end at the time) About 3 or 4 regular developers that used a lot of command line and custom code, that never seemed to make it into the code base, to get things done. I remember at one point they were just going to roll a release because they hadn’t done one for a long time. Just the way they worked they were never going to reach critical mass. They remind me of a local camera club I visited. They seemed to keep the thing alive out of some respect for the legacy than anything else.

Thank you! I just found a similar path that seems to work:

  • Start a new scratch layout in a Standalone Kicad PCB session
  • Paste in the parts, traces, etc.
  • Fix the designators to match the new schematic
  • Copy that block
  • Paste Special the block into the new layout, selecting Keep Existing Reference Designators
  • Save the new layout
  • In Schematic, do Tools Annotate and Save
  • Then do Tools, Update Schematic From PCB (bottom option) !

PCB now has a “cloud” of new components as usual, but NOT replacements for the things you Pasted Special before. So that works. For now.


AFAIK, geda and friends (gaf) were the first open source EDA tools made, back around Y2K. At the time, the choices were crazy expensive commercial programs, almost-a-toy commercial programs, and gaf. The individual programs that made up gaf all expressed their creators’ creativity, but worked together well enough. The UIs were weird, but many UIs were weird - converging on what we are used to now - 25 years ago. Text based was huge - I had personally witnessed grown engineers spending whole days clicking things in OrCad, that I could do in gaf in a second by search/replace in the text file. gaf/gschem is still maintained by the original guy, and newer forks are moving it along, but sadly it’s not the future IMO. Not running in Windows kinda limits its appeal, too.

When converting / recovering a project form some other program, my main workflow would be:

  1. Create an empty KiCad project.
  2. Possibly use standalone mode to import things.
  3. Continue with the project.

That way, anything you import gets it’s place and needs minimal editing afterward.
Maybe you find the article below useful.

Text based file formats was one of the nice things that made me adopt KiCad. 10 yeas ago it was still needed sometimes to hack into KiCad’s files with a text editor, but now it’s rarely needed. But if you wish, you can use an S-expression library to read KiCad’s file and then hack along in them. Or use Python scripting either directly in KiCad, or a standalone python program with a library that’s aware of KiCad’s “higher level” constructs. I’ve seen some people use sed, but that’s not my thing. I keep forgetting too much details to be able to work efficiently with such utilities.

After using 20 years Protel 3 (1997-2017) I moved to KiCad.
I didn’t tried to import any design from Protel. If I had to make new release of Protel 3 PCB I just designed new with KiCad.
All my Protel 3 PCBs were 2 layers designed with one layer being full GND. In such designs I spend 80% of time on positioning footprints to unravel connections. Looking at old PCB allowed me to save this 80% and with 20% left I could get over.

Reverse engineering from the old Protel gerbers to KiCad via the FAQ item above is a usable method and saves time. Especially if the changes you want to make are relatively small. Recently, I also imported a bitmap image of a hand drawn schematic into KiCad, and used it as a guide to place KiCad symbols and wires on top of it. This also worked as well as can be expected. It’s still manual entry, but having the old and new so close together is a time saver.