John,
I have been working exactly on this problem for some time. I started with all the layout software I could lay my hands on, and eventually came to the conclusion that none were satisfactory – all seem to have either a long, steep learning curve, or some 'quirk' in the usage that I disliked. (pause for storm of contradiction). My feeling was that I had no interest or time to learn how to use a screwdriver, I wanted to make PCBs – it had to be easier. In addition, I gradually realised that all the available software apparently is not designed for 'isolation' cutting. This seems to be due to the algorithm used to autoroute tracks (A* or A Star).
After a few false starts, I found that I could use LibreOffice Draw to design my PCB layouts, in the style of 'etched' PCBs. Draw is easy to use, and has the faciltiy to draw lines/circles (tracks and pads) in various widths, and at controlled angles. It also has multiple layers, so multi-sided boards were possible, and it could import images, useful as patterns. I had many years before used a PCB design app which used much the same process, which I found quite acceptable. (Before anyone knocks it, try it)
Once I had a design, it was then easy to use the Gcode extension available in InkScape to generate the Gcode (See the Internet), but later I felt that this was more complex than it need be, so I wrote my own small application to parse the SVG image files, and convert them to Gcode. This (currently) is a fast and dirty effort in Gambas BASIC, although I am working on writing it in Rust.
It allows me to set up traverse and plunge velocities, milling and drilling depth and some other parameters, then converts the SVG files to Gcode, taking into account these settings. It runs very quickly – it converts a 70K image file to Gcode in less than a second.It also allows me to produce a drilling pattern in Gcode (I see no need for Gerber at all).
The above applications are all available free to use or Open Source, and cost nothing.
In my case, I then use the Visualizer function in Camotics to do a 'dummy run' of the Gcode produced to check for any problems, then I feed it to the GRBL 1.1h controller of my router using either UGS or Candle2. (see the Internet for these tools, also free or Open Source). I use Linux, and I believe all the tools mentioned here are also available for Windows free to use or Open Source.
So for me, net cost from design to board is zero. (except for the cost of the raw board!) It takes me about 4 hours to design and produce a reasonably complex double-side board (e.g. Heating controller with TFT display, Arduino Nano and ESP32 plus relay drivers, sensor inputs on board)
Currently, I can mill isolation 'tracks' to a width of 0.5 to 0.75mm reliably using a thin conical cutter. The problem here is that no router has a perfectly flat worktable perpendicular to the mill spindle, and few PCB boards are flat, resulting in slightly varying cutting depths causing slight track width variations using a conical cutter. Both UGS and Candle2 mentioned above have rudimentary mapping functions to compensate for this, but I consider neither is fully acceptable, so I am looking at actively tracking the board surface close to the tool, and using this information to 'modulate' the mill-spindle Z height, so as to produce a constant depth cut. Again. work in progress.
As I mentioned earlier, it will also produce drill pattern Gcode. I usually manually edit the drill code onto the end of the track code, so it will first cut tracks, then drill holes. This means I have to add a short pause routine between the two sections to change tools, but I am adding the ability to do this pause into my own software, to reduce 'hands-on' time.
John – I think this meets your criteria of free, and no Gerber. I have found it very easy to build up a footprint and component library – design it once in LO Draw, and save the file, then you can cut and paste any time you need it. Inn practise, I find I rarely do this, I just design it 'on the fly'. There is no autorouting, but I don't find this a big deal since the process is very fast, with little 'learning time'. I'm looking at ways auto-routing could be implemented on LO Draw, possibly using its built-in Basic – all I lack is time!
If you care to PM me, I can try to answer any questions you may have, and try to provide more information, if any of this interests you.
An