As a test, just draw a wire with one 90 degree angle. Then put a resistor below it and add some short wires to its terminals, but disconnected from the first wire. Then drag that resistor right on top of the first wire and release: two junctions are created on both sides, without you intending to do so. Also, when two wires overlay each other, and one has a 90-degree angle, there’s an automatic junction right at that 90-degree angle corner.
Actually my use case is that I want to “unwind” the schematic: I have a PCB I want to make a schematic of, and I placed its image at the background, then placed the components on top of the picture and joined them correspondingly. Then I want to optimize the schematic to understand it better and so I need to move the components and wires around a lot, but then this creates a lot of wrong junctions, and it seems I can’t avoid it.
In the schematic editor all pins of the symbols, and the ends of wires are “attachment points”. And if they are on the same coodinates, they connect to each other. That is the normal way of making connections.
You are making it a bit difficult for yourself with this reverse engineering job. It looks like you are first creating a ratsnest of a schematic and then trying to drag things apart, but this does not work very well. I do agree that KiCad likes to create connections during editing the schematic, but in a “normal” workflow this is not much of an issue.
Did you import an image of the PCB in the PCB editor, or in the schematic editor? Attempting to draw the schematic over an imported image of the PCB (in the schematic editor) sounds like a horror show.
But KiCad is also slowly supporting better methods for reverse engineering.
I think (untested) this workflow works:
Import an image of the PCB in the PCB editor (or multiple images, top and bottom (mirrored).
For each footprint:
Put a symbol on the schematic.
Assign footprint.
Update PCB from Schematic [F8] to put the footprint on the PCB.
Draw tracks over the image, just duplicate what’s in the picture (I think this work because all pins are “unconnected”.
Add net names in the PCB editor.
PCB Editor / Tools / Update Schematic from PCB (Make sure to update the net names).
This creates net labels on the pins in your schematic.
Repeat.
Later: sort out the schematic symbols, replace labels with wires.
You can use Update PCB from Schematic [F8] and DRC in the PCB editor to find differences and mistakes between the schematic and PCB.
Also, you don’t have to do the symbols / footprints one by one, but you can do them in small groups.
But I do feel a warning is in place. This is not a good way to learn KiCad. Reverse engineering a PCB is only partially supported, and without a fair amount of pre-existing experience this is likely to become a frustrating endeavor.
That’s an interesting way to use the schematic editor. I really like the idea, but I don’t think it is a typical workflow. As such, the software is not optimized for that use. Of course there are many times when the functionality you’re describing (moving a part and letting go of the mouse button to connect wires) IS the desired outcome. So the software doesn’t really have a way of knowing that you don’t want the wires to connect when you are placing them on top of one another. So while it could be seen as a bug, I think it’s more of limitation in the implementation for your use case.
One possible workaround I can imagine is that you make the photo larger and use smaller component symbols so that there is more space between symbols and wires so that when you move them around they are less likely to collide when you stop and drop them.
As I’m writing this I see Paul’s reply and it’s a good one. His advice is pretty much always dead on.
However while reading it, I had another idea that could work a bit more easily for you and your schematic editor based effort.
Instead of working in the PCB editor, continue in the schematic editor, but instead of connecting everything up with wires, use net labels.
Then after everything is labeled, you can move the parts around as you like and as long as you select the labels at the same time, no wires are created and nothing gets accidentally connected. Then when you want to, you can erase those labels and add wires for visual connections that are easy to follow.
I’ve made label heavy designs in the past. It’s not great for understanding the circuit, but it works well enough for getting to the pcb design quickly. In this case it would help you organize the parts until you’re ready to wire them up for that visual feedback you’re looking for.
@paulvdh If it was auto-joining only the EMPTY pins and the actual ends of the wires, it would probably be fine, but currently it’s too aggressive in joining even already connected pins and even the corners (edges) of a wire - I guess the algorithm sees a wire corner as an end of a straight line.
Actually I just tried several popular CADs: Altium Designer, Eagle, EasyEDA, and they all had pretty much the same problem. The only one that worked great and let me finish it was the most primitive TinkerCAD. Please check it out how easy it is to connect things and move them around as you wish without the fear of screwing anything up. But the cons of the TinkerCAD are that it doesn’t allow adding an image and doesn’t even have basic elements like input/output, vcc and gnd.
I still don’t understand why there’s no simple free schematics editor with the most important features working well, and not overloaded with functions that actually break things… We need something like what Notepad++ is for text editing: not as fancy as Word, but not as primitive as Notepad, and with the plugins interface allowing people to extend its functionality.
My method for creating schematics is:
(firstly, all my jellybean symbols, and many others, are in personal libraries with footprints attached )
Place all the required symbols on the schematic. (placing single symbols such as res. & cap. then using the duplicate key to create many).
Arrange all the symbols needed, in an easy to follow and aesthetically pleasing method, on the schematic (In to out is L to R, +ve up and -ve down. If second or more rows of symbols are needed, they follow the same pattern as the first. When placing the symbols, care is taken to remember the idiosyncrasies of the program, so when symbols are not supposed to join, their pins are placed on different grid lines).
Place all wires. (If arranging the symbols is done correctly, unwanted junctions don’t occur, but, as the only operation being carried out in this stage is drawing wires only, it is easy to observe the occasional blunder of a misplaced symbol causing rogue junctions).
Add the values and footprints from in to out where required. (This is also a check for those rogue junctions).
If schematic modifications are required, I’ll “block” move the whole RH side of a line of symbols across to make or remove space for the addition or subtraction of symbols. I try to avoid dragging symbols individually to “squeeze in” that additional cap, wire, or whatever, knowing those rogue junctions are just waiting for an opportunity to pounce.
I guess there’s not a lot of demand for a schematic editor that fills that middle ground. By the time someone gets to the middle ground level of schematic creation, they’re basically ready for a more serious application like all the ones you just tried.
It’s good that TinkerCAD is flexible in the way you describe, but lacking IO and VCC and GND make it not very useful for anyone building PCBs.
This could simply be a matter of what you’re searching for. You say you want a schematic editor, but you are using PCB design software. A quick search turns up TinyCAD. I haven’t used it, but it looks like it can make decent schematics. It’s been around for 20 years, so maybe it’s got the features and the ease of use you’re looking for. Maybe something else would work better. I hope you find what you’re looking for. Failing that, it might be best just to bite the bullet and practice with tools that exist, or role up your sleeves and Make KiCAD++. =)