My two biggest complaints about KiCad have been (1) the PCB coordinate origin is the upper-left corner of an arbitrary “page frame” around the board rather than a point on the board, and (2) the Y axis increases down then screen instead of up.
The PCB coordinate origin thing annoys me badly enough that I have source patches to fix this. My intent is to have these patches merged into the v6 release, and I’ll probably make them available as source patches for v5. The current plan is for this to become a user-configurable board attribute, so if a team of people works on a board they’ll all see the same board origin without having to change user preferences.
But let’s talk here about my second biggest gripe: the Y axis direction.
I could fix this at the same time I fix the board origin issue. My patches already do this, and this could also be a board attribute. However, the potential would exist for some boards to have the Y axis increasing down the screen, while others would increase up the screen. Would this end up being more confusing to users?
How about footprints? Do footprints need to have the Y axis direction as an attribute? Then you’d have some footprints laid out with different Y axis directions.
It might be better for the direction of the Y axis to be a user preference thing, like the choice of inches vs millimeters. Then you risk having two people talking about the same object using different terms. But is this any worse than the in/mm thing?
What about schematics? If the Y axis increased up the screen, we’d probably want the origin to be in the lower left corner rather than the upper left. Would this switch automatically? Or should it be user-settable, like setting the Aux origin in Pcbnew? Eeschema internally supports an Aux origin just like Pcbnew but there is no way to set it, presumably because there was never a use for it.
As annoying as the Y-axis thing is, I’m now beginning to wonder if it would be better to just leave it as it is, at least for now. It’s much less of a problem to me than the board coordinate origin thing.
What do others think?
Edit: I’ve pretty well abandoned the idea of using board attributes to store either the choice of origin or the direction of the axes. The plan now is to make these user preference selections.