How to rearrange pins on an Eagle schematic

While editing a schematic, is it possible to rearrange pins on a symbol? I want to do this to make the schematic more readable, make the nets shorter and more direct, usually with an IC of some sort. I see schematics where the symbol for a part doesn't match the one I have in a library, pins are on different sides of the symbol, different order, etc.

I haven't been able to discover whether this is possible from the schematic. It sure would be handy. Maybe it's not possible, maybe an alternate symbol just needs to be defined in the library.

(Quite the learning curve with Eagle, has been fairly non-intuitive for me. But I'm getting there! Scary!)

there is a pin-swap icon on the tool tray
hover over each one and see what it says

just below the X for delete

Right, I was aware of that and tried it, I get "Pin abc has SwapLevel 0 and therefore can't be swapped!" Maybe I just need to change the swap level. I'll play with it some more, thanks!

Pin swaps only work for things like multiple gates in one package. You need an alternative symbol in the library

Or just give up on showing actual connections, and connect everything via names on a short piece of net from the pins. Need to be more careful, check the final Netlist (File:Export:Netlist) when done to see that everything you think is connected actually is.
Can cram a lot more stuff on a single eagle sheet that way as well.

You need an alternative symbol in the library

Another reason to hate Eagle. IIRC Protel allowed pins to be moved over 20 years ago.

Or just give up on showing actual connections, and connect everything via names on a short piece of net from the pins.

Which I guess is what everyone does, and it also explains why most Eagle schematics are impossible to read :slight_smile:


Yes, it is tough to show actual connections for all parts on an 11x17 schematic with all that can be made to fit on a 80x100cm PCB.
Heck even on smaller PCBs like a duemilanove that is stretched a little to add an RTC, RS232 driver, SD driver, SD socket, and a couple of extra headers for the extra pins on a '1284, the schematic fills right up, and devolving to drop signal lines and only show signal names is the only way to go with eagle light.

I don't advocate showing all signals either, that's just as bad in the other direction. It's very difficult to follow a lot of parallel wires and even harder when, as is the case with many Arduino schematics, they are crossed over in weird fashions . I've seen some schematics recently with every GND and VCC wire drawn in then every signal drawn as well and just to top it off all the chips drawn with the pins in the real-world location on the package.

A schematic is a document, and like all documents it should strive to be clear to the reader, although I admit that noobies have a different idea as to what is clear than an experienced person does, the aforementioned drawing of chips with real-world pin locations may be a good example of that.

With most circuits there's a nice balance between a rats nest of wires and having to search the entire page looking for a signal that could easily have been drawn in.

I used Rimu schematic for a while, great package but no pin moving so I spent time drawing new components (actually it's just a copy and edit of an existing component) when necessary so that my schematics would be clearer, and anyway I just like them to look nice :slight_smile:


I did the same as you when I was using expressPCB, made symbols that looked great for logic flow on a page.
But this surface mount stuff is kinda critical to have the pads the right shape & spacing & stuff, kinda pushed me into eagle, and I find it a struggle to come up with new schematic part/footprints as I do it so rarely. Have to pull up this instructable every time,

and what I'd really like is a way to edit/save existing footprints and tie to a copy of an existing schematic part.
For example, having an existing screw terminal that needs slightly larger thru hole size.
Or an existing SD socket that needs pads moved to keep out layer so they can't be routed thru, and don't show up on a stencil.

...what I'd really like is a way to edit/save existing footprints and tie to a copy of an existing schematic part.

Isn't that the point of having multiple packages for a given device? The symbol (on the schematic) is the same, but the package (footprint on the board) can be changed with the Replace command. It's actually one of Eagle's more straightforward features, I've used it a fair amount. Can change from a TH version to SMD, or just change a resistor or capacitor from one physical size to another. Often, I'll just grab whatever is handy out of a library to get the schematic done, then replace devices later to match the physical attributes of my particular components, perhaps after creating my own device and package.

Thanks for all the replies! Eagle certainly does have its share of psychotic and obscure features. I'm finally getting to the point of being able to get some things done with it, though. Sounds like it'd be worth checking out alternate software, Protel, etc., when I have some time.

But many of the parts I use don't have multiple packages, nor multiple layout symbols, that was the point I was after.

@crossroads: Do you know that you can select an entire part, copy it. Create a new part and paste it in? Yes its a really ugly way of doing it, but it does work. I find that I almost ALWAYS need to modify the footprints, if only to change or remove some text. So I basically cut-paste every part from existing libraries into a project-specific library.

@graynomad & crossroads: I generally show all signals in an unholy mess. Coming from a software perspective, when I do named wire stubs I feel like what's the point of a graphical layout tool? I mean if you are going to use named wire stubs, the natural representation is a text file that looks somewhat like a software program. So when using named wire stubs I feel like I'm shackled to this useless (and torturous to edit) graphical tool. At least with the unholy mess you can see at a glance that everything is connected up (especially if you grab the part and shake it around a bit -- unconnected nets don't move) :-).

In fact, I had started writing a project to do a schematic representation in Python but never got to actual gerber generation...


I've only done a few things in eagle, so its a bit of a wake up & figure what I did last time with every new start. Doesn't help that its usually late at night too, after a full day of work and a couple of hours of fencing/coaching/training 8)

I do the same thing - connect stubs of wires, move the part to see they actually got connected.
With an IC and stubs, it is easier to move a part around the schematic as things get tight.
If I had one of the paid versions, without the limitations, I would show more as the space would be available.

Just dealing with the big library of parts and the limitations presented for actually making it work...

MY COMPANY had a military customer and a specification like a book. And they want (yuk) Eagle PCB documents - we normally use Credence.

SO TO RE-ARRANGE THE LOGIC GATES we used the following method.

  1. Make a print-out - for safety!

  2. Insert bypass wires around all the pins of each gate to be changed (this minimises collateral damage);

  3. DELETE gates, carefully, one chip-type at a time;

  4. ADD a replacement IC Chip from the library and line up the gates in the margin, one after the other;

  5. MOVE each spare gate into the schematic, removing the shorting wires after moving each gate;

  6. Recheck your work against the print-out. PINSWAP and GATESWAP are operative for final tweaks.

Cadsoft EAGLE ... so poor it makes EXPRESSPCB look good.

For what it's worth... Eagle files are in XML format (well structured text). I have found it fairly easy to make changes similar to the ones described above by directly editing the files with a simple text editor. I suspect a decent XML editor would make the process even easier.

I have been told it is the gold-standard. now I read that Eagle is crap too?!?

It's neither. It works reasonably well but, like most low volume software, has rough edges.

That's just the way the military uses Eagle. They have entire books on how to dig a hole, so their Eagle procedures are just as detailed and WTF.

If it's a task you're going to do often, then write a script to do it. Then it could be just as easy as running the script and clicking on the parts. But the bosses in the military are even more constrained than regular bosses, so you get that WTF procedure.

A lot of the other answers in this thread are constrained by the free/cheap version of Eagle. If your circuit is too complex to fit on a single page then you're getting close to requiring the professional version, which has more than one schematic page.

To answer the original question: it is possible to have multiple symbols for a part. Usually every part has one 'required' symbol and rarely you will see optional symbols. But you can do a lot more than that.

The reason why we don't use multiple symbols for the same part is then it would not be very easy to read a diagram. If it's something you use in different projects you will get used to looking at one version of the symbol and then you might connect power backwards or something worse in that project that uses the 'wrong' symbol. Notice how we don't usually rotate the symbols either. Even simple 3-leg devices like transistors are usually drawn in a consistent orientation to make them easier to understand.

Eagle works very well, I use it for all my designs. You would be amazed at just how much stuff you can squeeze into a 80x100mm board with the free version as well.

I even created this package showing how to make footprints/schematic symbols.
Here's the first page view.

Eagle works very well, I use it for all my designs. You would be amazed at just how much stuff you can squeeze into a 80x100mm board with the free version as well.

I discovered that the size limitation only applies to active pins. I've actually got some designs where parts overhang this limit on both sides. As in, only one row of pins on a 9 pin connector can be used because the boundary is right down the middle of its footprint. Mounting holes, support areas and cutouts aren't limited by the board size.