X-Authentication-Warning: delorie.com: mail set sender to geda-user-bounces using -f X-Recipient: geda-user AT delorie DOT com Date: Sun, 13 Aug 2017 15:16:28 +0200 (CEST) X-X-Sender: igor2 AT igor2priv To: geda-user AT delorie DOT com X-Debug: to=geda-user AT delorie DOT com from="gedau AT igor2 DOT repo DOT hu" From: gedau AT igor2 DOT repo DOT hu Subject: [geda-user] [pcb-rnd] roadmap for data model / drawing primitive cleanup Message-ID: User-Agent: Alpine 2.00 (DEB 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII Reply-To: geda-user AT delorie DOT com Hi all, this is somewhat related to the other thread with the slotting. As I wrote earlier, the subcircuit upgrade is not merely replacing elements with something that supports "polygons and text on copper" or "better paste pattern", but it is a large scale rework of the data model. So instead of introducing 10 new special cases for 10 such feature requests, we just let users compose arbitrary constructs on whatever objects on whatever layers which will automatically solve all such feature request. As a result we will have less number of drawing primitives, but what remains will be more generic. Together with subcircuits it will be easy to combine them to build up new, non-atomic objects. We will go from PCB's 11 drawing primitives to only 6 at the end. Less is more: you will be able to draw arbitrary smd pad shapes and you already can include paste and mask patterns in a subcircuit (that will then be the footprint), draw poly on silk and text on copper in your footprints, just to name a few possibilities we will get automatically. More details can be found in the following devlog entry: http://repo.hu/projects/pcb-rnd/devlog/20170813_prim.html Most importantly: the new set of drawing primitives will be orthogonal and will lack special casing. Examples of non-orthogonal, special cases in the original data model: - 'pin' which is really an element-via-with-pin-number; the via code is mostly duplicated as 'pin' code, sometimes adding a few lines for the pin number - 'pad' which is really an element-copper-line-with-pin-number; but you can't make a polygon or arc be an smd pad - 'element-line' which is really an element-silk-line, but you can't make it work with any other layer than silk and can't draw polygon on silk, etc. Finally, the best part is that we can do the transition while keeping everything stable all the time. We simply add a few new primitives in parallel to the old ones, for a short time we will have even more than 11. Then when the new ones already work properly, we start switching over and gradually remove the old ones. We will retain file format level compatibility with every other CAD (e.g. kicad, eagle, gEDA/PCB). Regards, Igor2