UI improvements - comments

(My comments on the “UI Improvements” page at http://www.ohwr.org/projects/cern-kicad/wiki/UI_improvements

I’d like to suggest a few general principles, rather than specific features. This post is addressed to the Eeschema module.

1. Never break a connection unless the user explicitly deletes something.

Moving, rotating, etc. should never break a connection. If this means wires at odd angles, and even an occasional arc, so be it. The user can fix those easily, the drawing is still readable, and the netlist is intact. This encourages users to clean up their drawings by rearranging parts, and to reuse old schematics, without fear of messing up existing connections.

2. There cannot be two things on top of each other.

Yes, this means using a 2D collision engine. There are lots of those around, developed for games, and they’re really fast in the presence of incremental changes. Part outlines should not be allowed to overlap. Don’t be too overly strict about this; use a part outline that’s a polygon, not a rectangle. Or at least a union of rectangles. If someone wants to put a capacitor directly across the terminals of an inductor symbol, that should work.

Wires parallel to and on top of wires must not exist. When someone accidentally violates these rules, don’t let the user put the part or wire down; continue dragging, much as PCBnew does when you try to connect a trace to a place it should not go.

It’s OK for wires to cross parts; it’s bad form, but not a source of error.

A tough case is when some subdrawing such as a symbol has changed, and forces a schematic design rule violation. In such cases, do something visual, like displacing a bigger part until it clears, or drawing a wire as an arc rather than straight lines. That tells the user they need to clean up the drawing. This comes up in mechanical CAD all the time, but it’s far easier to fix in schematic capture.

This is hard to implement, but easy on the user.

3. Dots at connections are inserted and deleted automatically as wires are drawn.

Most schematic capture systems do this, but KiCAD sometimes has left-behind dots on wires, and it’s possible to have a T-intersection without a dot. Try LTSpice’s IV’s schematic capture to see this done well.

4. In the schematic component editor, imitate a draw program.

The common functions of a 2D draw program, such as cut, paste, group, and ungroup, should be present. Check out Inkscape for a simple SVG open-source draw program. Library management should look more like open/close/new/save/save as. Unless it’s markedly better, being different doesn’t help here.

2 Likes