Why does Eeschema ever do anything other than rubberband wires?

Yeah, sometimes Ctrl-Z or ESC will undo drag-mode. I am using kicad 5.1.

There were times when I found useful to move blocks (areas) of a schematic, including the wires, and rubberbanding was not desirable. For example, I needed to insert another amplifier stage between a discriminator and a I-V converter. I needed to completely separate the two stages, but keep the existing wires. I’ve found it more efficient, IMHO.

Thanks. It seems that neither behavior is quite what we want.

I am obviously not a software developer, but we all have different experience. A computer mouse is now an obvious thing but it was not obvious before Xerox and Apple invented and introduced it.

In a lesser way, I think that the GUI behavior in ExpressPCB seems obvious to me but I guess that not everyone has used ExpressPCB. Maybe someone thinks that my “obvious” is “obviously wrong.” But it would be nice to know why dragging cannot be this easy in KiCad.

Does cut-paste do what you want for this?

I still don’t understand. To me the behavior of Expr.PCB which you describe is exactly the same as in KiCad, provided that the bug mentioned above is fixed and it works like I expect it to work after the fix.

In ExpressPCB I can move the mouse without moving the selection. Dragging only happens while holding down the mouse button. If I find that I need to add or subtract items from the selection, I can release the mouse button and click on symbols or junctions (or select an additional group) while holding down the shift key.

For example what I can do is:

Select a group while holding down the mouse button
Release mouse button
Drag while holding down the mouse button
Release mouse button
Ooops I want to add symbols in another group.
hold down shift key, and drag to select another group while holding down the mouse button
release mouse button
click on symbols or junctions to add or remove them from the group
Hold down mouse button to drag the total group. Release mouse button

The attached .gif demonstrates this capability, not necessarily in the exact sequence.

If cut-paste would be preferred by everyone than the word ‘move’ would be not existing in computer world, but it exists.
Myself - working with any kind of graphic I newer replace move with cut-paste.
If I can’t move - for example from one file to another than as a last life saver I use cut-paste.

I think it may be because I have never been used to use Windows File Explorer in which when you have to move files from one deep place in directory structure to another the simplest way is to cut-paste them. I use FreeCommander instead. Having two panels with files I just move (or copy) selected files from one panel to the other.

In my opinion dragging (not drugging :slight_smile: ) in schematic has only practical use if the drag is along wires. The proces of adjusting many slanted wires is according to my experience (not in KiCad) more time consuming then making them ab initio. I had never did it in KiCad so can’t say how it is here.

Yes OK not so much difference between move and cut-paste in many programs. My point is that the move or cut-paste command sets provide that capability of moving a group as a unit without rubberbanding wires. The advantage of cut-paste (compared to move) is that cut-paste allows you to move to a different page or area of the schematic without having to scroll through areas in between. Drag can be different from either (cut-paste or move) in that it rubberbands the wires.

ExpressPCB drags by default (no command of any sort needed, just click on selected group or symbol and drag mouse with button depressed) or it can cut-paste. ExpressPCB does not have a move command. While ExpressPCB has plenty of shortcomings, IMHO lacking “move” is not one of them.

I agree generally. However for example in ExpressPCB if 1 or 2 wires end up angling, I can then insert corners and move those corners to create orthogonal wires.

In ExpressPCB I can copy or cut-paste wires, but I cannot just drag a wire. Rather I drag the symbols, wire end points and junction points. If I simply select a wire and try to drag it, it will do nothing. If I select junctions or end points then the wire will drag or rubberband as dictated by the motion of the junctions or end points.

I think KiCad developers if they see some people prefer dragging and some moving then their decision will be “Lets allow for both”. I believe they work that way in many, many subjects and praise them for that.

Yes I think that all of the above can be accommodated. Using a G for drag and M for move is one option, or perhaps there could be a user preference set.

Cut-and-paste is another way to do it, of course. However, I’ve found the Move method to be more efficient than cutting-and-pasting.

Moving visually is much more natural way for human beings to move things compared to removing, hiding, moving and revealing. Basically that’s why drag’n’drop exists and is ubiquitous in modern graphical UIs. It’s low level psychology.

I do not see any need to exclude possibilities. Dragging and dropping (I will call it moving) from one sheet to another might not work, or across a large page. So cut and paste has its advantages under some circumstances. I think we can have drag with wire rubberbanding, move without rubberbanding, or cut and paste; 3 ways to do the job. We do now but it does not all work so well.

Dragging with rubberbanding wires is nice because if it works well, you do not need to rethink the connections.

Adding to the above: I think we can all agree on the idea that moving and dragging are both useful. Assume they are two different options. My question then is, WHEN DRAGGING, what is the point of treating wires as rods of fixed length??? I have not seen anyone give me a reason why that behavior is helpful.

Not every behaviour must be useful. In this case it simply is legazy behaviour which is why version 6 will change it. (And I bet some long time kicad users will not be happy about that because now they need to relearn the tool.)

One reasoning might also be that without a feature that keeps wires nicely organized some users might prefer the wires to break instead of needing to sort out the resulting mess of a drag operation. V5 just drags the wire endpoint instead of introducing wire corners to ensure orthogonal wires)

I don’t understand something here.
If you drag (not move) the connections are preserved. So if some part of schematic changes its position their length has to be changed (no way to have fixed length).
What am I missing?

We have a terminology problem. Normally in software world “dragging” means moving by dragging with mouse. In KiCad dragging means moving by dragging with mouse, having rubberband wires (or tracks in pcbnew), in contrast with “moving” which means moving without rubberbands.

I understand it that way (I think). Wires (while dragging) are rubberband to have a possibility of changing their length.
In that context I don’t understand the question about dragging with wires with fixed length.

I understand that BobZ considers 3 situations:

  1. mowing with wires with fixed length,
  2. dragging with rubberband wires,
  3. dragging with wires with fixed length.

And says that for 1, 2 everything is clear but for 3 he didn’t get the answer.
But I don’t understand what situation 3 means - I can’t imagine what it is about.

Hi, Piotr.

I am dragging in the attached.gif. Watch the behavior of the wire connected to comparator pin 1. It pushes and pulls the vertical wire which is connected to the right of it.

Yes you are absolutely correct. Maybe we should rename dragging to something easy like pof7432wephwfwep494877oihgrepugrh. :slight_smile: Seriously maybe some sort move with option of turning rubberbanding on or off.

I think that maybe the biggest problem with V5 is that the selected items were not lit up or otherwise indicated. I think that dragging only symbols and junctions/endpoints (not wires) makes the most sense, but I am biased by my experience with ExpressPCB.

I didn’t done any experiments but I think the program logic is that what was selected by the user (including wires) he wont to move/drag. I think it would be hard to define another rule. If the program would get right to decide that he can make elastic not selected wires and selected wires (however he wont) than how the user will be able to specify which wires in his intention belong to the block (set of elements with all relation between them fixed).
If you need this wire from pin 1 be elastic you should not select it, I think.