Once again: any way to disable "autoconnect"?

I agree, #15394 is not the optimal solution.

I am uncertain of the “much easier to implement” part though. Not connecting wires that happen to intersect when dragging symbols would probably require a complete rework of the internal mechanism for determining connections in the schematic.
It seems that the schematic editor at the moment determines the connections in real time from how wires and pins are located on the drawing canvas. In order to “know” that two wires that happen to intersect while dragging a symbol should not connect, the schematic editor needs to have a table of “connections intended by the user”, let’s call this an “internal schematic netlist” (not identical to netlists you can export from the schematic editor). This seems not to be the case at the moment, and would need to be added.

With that routines for adding and removing connections intentionally to/from said internal schematic netlist would need to be added, as well as routines for handling cases when the position of wires while dragging conflicts with said netlist (for example keeping wires apart automatically or similar).

It would be highly desirable, but has not been implemented yet.

2 Likes

Definitely not. Currently the connectivity works by checking if the wire endpoints are at the same coordinates, if so they’re connected. Allowing multiple “connection clusters” at the same coordinate probably requires a lot of rework of the internal code.

1 Like

This topic is also related:

“Currently the connectivity works by checking if the wire endpoints are at the same coordinates, if so they’re connected.”

Would updating this also permit the concept of “pin stacking” to get phased out? That seems a worthwhile move on its own. Without knowing the code base, the current behavior appears to be based in the same model where connection and position are not separable.

The concept of pin stacking is unlikely to get phased out soon. KiCad’s native libraries use pin stacking. I generally make copies of symbols used and un-stack the pins in my projects. But overall, it’s a separate topic and not related to the way KiCad handles wiring in the schematic.

1 Like

OP - I find myself rearranging schematics from my initial reverse-engineering sketches to something more polished and that gives a better understanding of the circuit, so I understand well your frustrations.

Just in case you weren’t aware, there are two different selection algorithms - when you drag, watch the symbol - the dot in the middle is ‘all objects fully within’ while the dot on the edge is ‘all objects intersecting’. I believe the selection window is different depending on the mode as well.

If I need to drag a component out of an area without damaging other nearby lines, I’ll add perpendicular spurs on the lines in question, then I can drag (G key) and only move the desired part, then clean up the lines as necessary afterwards.

1 Like

I almost got a heart-attack when moving some component with quite some connections on my schematic. I moved it a little for clarity and “did not pay attention” but new connections where made automagically!
I was a bit short of time and yes I only discovered it when checking my “final” PCB, otherwise it would have gone to the “PCB bakery” and would have been useless!
A suggestion, when shoving some components or connections make any “new” connection turn up in another color eg. red, so that they become visible AND you can “confirm” them. Left-click = ok, Right-click = nok
Good idea?

Just hit Ctrl-Z to undo.

this is a behavior i’m used to from other CAD, not particularly worrying, i’m used to pay attention when moving stuff.

More worrisome is the fact that the wires are deleted if you place for example a resistor on top with both ends connected. This is a behavior i’ve never encountered in other CAD systems, and i have to keep higher level of attention, otherwise for me it’s easy to inadvertently mess up stuff. (however i think that there is a option flag to avoid that)

If you only realise what has gone on some time later after the files have been saved and closed it’s too late to do an Undo.

Well the alternative is to pause to confirm every change. And even then you may mindlessly Ok the change. Life is dangerous.

1 Like

Right but if you close Kicad in between for eg. go to the pub and restart your design after your hangover has washed away 2 days later … Ctrl-Z is of no use.

You want to go to the pub in between moving the part and clicking Ok or No? That was your original proposal so you are moving the goalposts. :wink:

1 Like

Sorry, my hangover is still there… :rofl: :joy: :beers:

I think highlighting the automatic changes or introducing a confirmation dialog are valuable enhancements, but more or less workarounds to mitigate an underlying problem.
Wouldn’t it be preferable to avoid this from happening in the first place rather than finding ways to undo it?

IMHO, even if some other CAD solutions operate in a similar way, that shouldn’t be a reason not to challenge the autoconnect function.
The LibrePCB schematic editor, for example, doesn’t behave this way. …but is unfortunately not yet quite as mature as KiCad in other aspects. :slight_smile:

This is indeed a bit of a “weird” function, but I do like it. You can just get a new resistor or capacitor and place it on a wire, and KiCad will then insert it into that location. You can also place some resistors and capacitors in a row (or column) and then draw a wire though them all, and KiCad will then cut the wire into individual sections.

But it is difficult to find a balance between “idiot proof” and “improving productivity”. For a lot of things I would rather have things that improve productivity at the expense of less “idiot proofness”, but there are limits. It is also not an option to make everything configurable. This would clutter the UI with so many trivial settings that finding anything becomes difficult.

From what I remember from a seminar / video long ago (Maybe 2016?) (Wayne Stambaugh etc), the intention for KiCad is to become a “professional” PCB program in which things can be done quickly and efficiently, but also to attempt to keep entry for hobbyists and starters relatively easy, but this is a secondary goal with less emphasis.

For me, it is a bit of a bummer that KiCad has lost some of it’s simplicity since I started using it (I think 2014 or thereabouts). But the huge improvements of increased functionality is worth it, and I would not want to go back to a KiCad from even just a few years ago.

3 Likes

FWIW, LTspice and Altium do this. I prefer it.

John

2 Likes

I just took a peep at LibrePCB and the first thing I saw on the forum was people moaning because they want Kicad library’s but there is no tool to convert them :rofl:
:mouse:

Insert in a wire ? Altium does this.
before
image
drop resistor on
image
and tool inserts
image

1 Like

My proposal was not to dump the features altogether, but to give the user the choice to select “idiot proof” :slight_smile: or “improving productivity” via the preference settings.

I understand that some people like these features and see this as a productivity increase because they know how to handle the function based on working with other CAD systems or because they are generally more experienced.

I personally don’t really like the feature, but I could cope with it. The thing is, I am looking for a solution for a specific use case that would require several other, rather inexperienced users to be able to work with the schematic editor without the risk of accidentally screwing things up unnoticed, and therefore “autoconnect” is currently a showstopper.

Granted, that is a special use case, but I do see no harm done in adding the option to the preferences for those users who prefer to work without these advanced functions.

As to potentially cluttering up the UI: I don’t believe that adding an option or two to the already very expansive preferences would be an unduly increase of complexity :slight_smile:

…of course the effort required to implement these options is a totally different story which I can’t judge.