Strange behaviour dragging wire segment

Hello Everybody,
I’m a beginner in Kicad and I have a simple question, I can’t find answers in the documentation.
In the schematic editor, when I edit a schematic and start dragging a wire segment, if suddenly this wire segment stops on another wire, a connection appears at the intersection. What can I do to prevent it?
Thank you in advance.

1 Like

Also hello and welcome to the communtiy!

Maybe one hint: It would be helpful for others looking for similar info - and more motivating for people trying to help you - if you would change the thread title into something more meaningful. “A question from a beginner” is totally irrelevant.
What about “Schematic: Strange behaviour dragging wire segment” or so? You could add “(beginner)” if you feel like it, but posting beginner questions is totally fine here, no need to excuse.

Also, re-reading your question at least five times I still don’t get what you are referring to. Maybe post a screenshot? IIRC there is some limit for first-time posters, search the forum.

I anticipated this and raised them to basic already.

I am guessing you are doing something like this:

So in answer to that dragging in the schematic question – don’t do that :slight_smile:

Yeah, if it ends coincident with another net it merges them. It’s annoying. Should give a warning.

Sometimes you can anticipate it and be careful when dragging, and sometimes it is just easier to delete and re-do. Or, add your new lines first then delete old ones.

Hello Martinn
Thank you for recommendations,
I’ll try to explain more clearly.

I’m trying to drag the segment shown in the picture to the right. If I stop the segment movement on the +5VD wire and release the left mouse button, I have a connection established between these wires, as shown in the second picture.

Is there really no way to get rid of this?
I’m an eagle user, and I also tried using DipTrace, but it didn’t happen there either.

If you drag it over and drop it onto the VDD net it presumes you want to merge them, but drag it another grid step to the right and it should be fine

Which you can’t do after the merge – undo is your friend.

Thank you .
I tried this and I know it works.
But imagine that you have a large sheet and a lot of wires. When you grab the lower part of the wire and drag it, you don’t see what it intersects with at the top.
Also, if I want to make additional connections, I have to use the Place a junction tool.
And this is indicated in the documentation:
" Wires connect with other wires or pins only if their ends coincide exactly. Therefore it is very important to keep symbol pins and wires aligned to the grid. "

This is a topic that has come up for (heated) discussion several times before. Some defend the current behaviour very strongly, while others, like me, and apparently you, find it annoying and would like it to behave differently (essentially, that there would be a netlist internally in the schematic editor and that it would not rely on the graphical positioning of lines in order to determine what is connected where).

I hope that one day, even the KiCad schematic editor will reach that stage, where it automatically keeps wires that should not be connected, apart while dragging…


Instead of Left Mouse Button “hold down” to drag a wire, use “Hover cursor over required wire” then press Hotkey “G” for Drag.
This method leaves your left mouse button finger free to scroll or use keyboard and the dragged wire function will not complete until there is a LMB click action.

1 Like

I really like KiCad but I think that the wire dragging behavior is less than ideal. I have forgotten the workings of more EDA tools than I remember. One schematic tool which is fresh in my mind is LTSpice which IMO has plenty of other idiosyncrasies.

But one case in point is “Classic” ExpressPCB (which rudimentary software has been sunset earlier this year). With that tool, all wire corners are junction dots. I think the key in editing those schematics is that you do not select (or drag) wires. You select and move junction dots and symbols; the wires follow the junction dots and symbols. All window selection is similar to KiCad’s “greedy select”. (In KiCad that requires a selection box starting in lower right and ending in upper left, or at least that is the way I do it.) I do really like our ability to either greedy select or not, but I guess I have a strong greedy tendency. :frowning:

ExpressPCB Classic produces schematics which are cosmetically mediocre but perfectly readable. The other key takeaway is that editing an ExpressPCB schematic seems easier (at least to me) than editing a KICad schematic. Of course there are a bunch of other drawbacks to the package, such as it being captive, and limited to 2 or 4 layer boards with tracks permitted only on the top and botttom layers.

1 Like

Thank you for the hint.
It really helped.

1 Like

Being able to connect the wrong so easily wires is a hot potatoe imo. :joy:

So you create the netlist before drawing the schematic?

There is a difference between drawing the schematic, and making edits.

I also find the current behavior annoying. It “works” mostly, but it’s too easy to make mistakes. For example the Align Elements to Grid function sometimes creates shorts.

The problem here is that it will be difficult to even set up a set of rules for when connections should be made, and when not. Align Elements to Grid should never create new connections. What about block copy or move operations? Making new connections is probably expected here.

And when dragging a single wire, such as in the example in this thread?
Better behavior is probably if KiCad creates an extra bend to prevent creating a new connection. Creating new connections when dragging a wire, could then be reserved if the wire is explicitly dragged into another wire before releasing the mouse button.

It is difficult to get this right. In the past I’ve used a program, which made such a mess of wiring when you dragged a symbol with attached wires, that you became afraid of using that function. It almost always resulted in an undo, or redrawing connections. It was nearly unusable.

Another program I used once kept track of an internal netlist, to prevent accidental connections like this. The problem was it had a bug, and when you deleted a wire from the schematic, the netlist was not always updated, which resulted in unintended shorts on the PCB. I paid for that software too, but was before the internet, no bug tracker or other decent way to report bugs. As a result that program went immediately into the garbage bin.

1 Like

When you create a new connection, doesn’t the program automatically assign a new net name to it?
My question then is, if you connect 2 nets, what name is assigned to the new merged net?
In a similar case, the Eagle CAD always raised a warning about what name to give to the new merged net?

There are rules that determine what the resulting net name will be. A label for example will take precedence over an automatic name.

But the program doesn’t necessarily have to consult the netlist to see if any connections were added, you don’t have to stipulate the mechanism. If it’s undesirable that the editor not create connections when symbols are moved around that’s a valid request. The problem is distinguishing between intended connection creation and not. Perhaps there should be two kinds of move.

Maybe these posts should be merged with all the previous discussions.

could you please provide a link to previous discussions?

Sorry I don’t have links so you’d have to search for them yourself, like me. Like hmk we have a sense of deja vu.

The general problem with this is that the computer can not know what individual people want. A software has to work in some way and sometimes its not the way you want and sometimes its what you wan’t. In addition some people are used to something else that may do something differently and have hard time starting to think in new ways.

So there are several ways one could deal with them but all of these have downsides:

  1. It could be a user settable preference.
    The problem with this approach is that it makes the software harder to learn. Since now not only do you need to know what setting is on when reading guides, tutorials and so on. And new users would still have this reaction that the software sucks as it does this that i don’t want.

  2. There could be 2 separate tools. One that does not attach the wires and one that does.
    Problem with this is nearly the same as above but less of a problem for tutorials.

  3. One could just expect users to learn new workflows.
    Again the reaction is mostly the same.

  4. One could come up with a new paradigm, that actually solves the problem. But one can not just suggest something that happens to work for you in this use case, it must make all users better of on the long run.
    However, even this approach does not really solve the problem, because it does nothing to people who are like this is what I expect and this is how it should work.

    Example of this kind of thinking. Instead of making the pins part of the symbol make the pins, either areas or launch a dialog when you connect to the symbol. And the pin would appear where your connecting from. This way i could have free in order, symbols rotated at non 90 degree angles, because i do not rely on snap to connect.
    But this would need the entire program to be rethought