X-Authentication-Warning: delorie.com: mail set sender to geda-user-bounces using -f X-Recipient: geda-user AT delorie DOT com X-Virus-Scanned: Debian amavisd-new at papyrus.altaweb.hu Date: Sun, 13 Sep 2015 22:37:36 +0200 From: "Lev (leventelist AT gmail DOT com) [via geda-user AT delorie DOT com]" To: geda-user AT delorie DOT com Subject: Re: [geda-user] Apollon Message-ID: <20150913223736.66c23312@jive.levalinux.org> In-Reply-To: References: <20150913140631 DOT 1da1b78d AT jive DOT levalinux DOT org> <201509131529 DOT t8DFTUVS022118 AT envy DOT delorie DOT com> <20150913210401 DOT 2153d6d5 AT jive DOT levalinux DOT org> X-Mailer: Claws Mail 3.11.1 (GTK+ 2.24.27; amd64-portbld-freebsd10.1) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="MP_/DoLK0lDm7CKr6Zd9hpf/99G" Reply-To: geda-user AT delorie DOT com Errors-To: nobody AT delorie DOT com X-Mailing-List: geda-user AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk --MP_/DoLK0lDm7CKr6Zd9hpf/99G Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: base64 Content-Disposition: inline T24gU3VuLCAxMyBTZXAgMjAxNSAxMjowOToyMyAtMDgwMA0KIkJyaXR0b24gS2VyaW4gKGJyaXR0 b24ua2VyaW5AZ21haWwuY29tKSBbdmlhIGdlZGEtdXNlckBkZWxvcmllLmNvbV0iDQo8Z2VkYS11 c2VyQGRlbG9yaWUuY29tPiB3cm90ZToNCg0KPiBQQ0Igc2F2ZXMgdGhlIHNlbGVjdGlvbiBieSBw dXR0aW5nICJzZWxlY3RlZCIgaW4gdGhlIHNlbGVjdGVkIHN0dWZmLg0KPiBJIGd1ZXNzIHRoaXMg d291bGQgYmUgYSBwZXItb2JqZWN0IGF0dHJpYnV0ZSwgSSBkaWRuJ3Qgc2VlIGl0IGluIHlvdXIN Cj4gc3BlYy4NCg0KWW91IGNvdWxkIGF0dGFjaCB1c2VyIGRlZmluZWQgYXR0cmlidXRlIHRvIGFu eSBvZiB0aGUgb2JqZWN0cy4gWW91IGNhbiB1c2UgdGhpcw0KdG8gbWFyayBvYmplY3RzLiBUaGlz IGlzIG5vdCBkb2N1bWVudGVkLCBhbmQgZm9yIGZ1cnRoZXIgc3R1ZHkuDQoNCj4gQSBjb21tZW50 ZWQgU1FMIG1pZ2h0IGJlIG1vcmUgcmVhZGFibGUgYW5kIGV4YWN0IHRoYXQgdGhlIHBkZiB3aGlj aCBpcw0KPiBwcmV0dHkgZGVlcGx5IG5lc3RlZC4NCg0KVGhlcmUgaXMgdGhlIHNjaGVtYS5zcWwg ZmlsZSBpbg0KDQphcG9sbG9uL3NxbGl0ZV9zY2hlbWENCg0KQnV0IEkgYXR0YWNoIGl0IHJpZ2h0 IG5vdy4NCg0KVGhlcmUgaXMgYWxzbyBhIHRyZWUudHh0IHdoaWNoIHNob3dzIGFuIGV4YW1wbGUg c3RydWN0dXJlLg0KDQpMZXYNCg0KLS0gDQo3MyBkZSBIQTVPR0wNCk9wLjogTGV2ZW50ZQ0K --MP_/DoLK0lDm7CKr6Zd9hpf/99G Content-Type: text/x-sql Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=schema.sql --this is going to be a database, where design data is stored of placed --components. Data like placement angle, coordinates, etc. This is an --extraction of the PCB and schematic file. One db per board. --So we load with data when update_dbsym is run, and after when the PCB is --complete. --Shall we populate other data from the main db? Like symbol, footprint, --cad_model? So we don't have to query all this stuff again. --The goal is to generate the CAD model of the complete board. Maybe we --shall put another table with board data, like thinkness, etc. --This is going to be a new PCB file format. :-) BEGIN TRANSACTION; --layout object, type 0 CREATE TABLE pcb ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT --add pcb related attributes. DRC rules, etc. ); --component object, type 1 CREATE TABLE component ( id INTEGER PRIMARY KEY AUTOINCREMENT, refdes TEXT, value TEXT, dbsym_id INTEGER, mech_model TEXT --add here any other component level attribute ); --padstack opbject, type 2 CREATE TABLE padstack ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT ); --primitive graphical oval object, type 3 CREATE TABLE oval ( id INTEGER PRIMARY KEY AUTOINCREMENT, DX INTEGER, DY INTEGER, name TEXT ); --primitive graphical arc object, type 4 CREATE TABLE arc ( id INTEGER PRIMARY KEY AUTOINCREMENT, start_angle INTEGER, stop_angle INTEGER, R INTEGER, W INTEGER, name TEXT ); --primitive graphical rectangle object, type 5 CREATE TABLE rectangle ( id INTEGER PRIMARY KEY AUTOINCREMENT, X INTEGER, Y INTEGER, name TEXT ); --primitive graphical line object, type 6 CREATE TABLE line ( id INTEGER PRIMARY KEY AUTOINCREMENT, W INTEGER, name TEXT ); --primitive graphical polygon object, type 7 CREATE TABLE polygon ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT ); --primitive round hole object, type 9 CREATE TABLE hole ( id INTEGER PRIMARY KEY AUTOINCREMENT, D INTEGER, start_layer_id INTEGER, end_layer_id INTEGER, is_plated INTEGER, name TEXT ); --primitive vertex object, type 8 CREATE TABLE vertex ( id INTEGER PRIMARY KEY AUTOINCREMENT, X INTEGER, Y INTEGER, sequence INTEGER, name TEXT ); --attribute object, type 11 CREATE TABLE attribute ( id INTEGER PRIMARY KEY, name TEXT, value TEXT ); --layer table CREATE TABLE layer ( id INTEGER PRIMARY KEY AUTOINCREMENT, material TEXT, Z INTEGER, --thickness is_outer INTEGER, is_mirrored INTEGER, drc INTEGER, --drc preference. Conductive DRC, non-conductive DRC, no DRC at all, etc. name TEXT ); --object relations CREATE TABLE object_relation ( parent_type INTEGER, parent_id INTEGER, object_type INTEGER, object_id INTEGER, X INTEGER, --relative to the parent object. Y INTEGER, --relative to the parent object. ANG INTEGER, --relative to the parent object. Placement angle. layer_id INTEGER ); --layer structure --conductive layers from 0 to 31 --bottom is 0, top is 31 INSERT INTO layer (id, is_outer, is_mirrored, name) VALUES (0, 1, 0, "bottom"); INSERT INTO layer (id, is_outer, is_mirrored, name) VALUES (31, 1, 1, "top"); --silk layers from 32 to 63 --bottom is 32, top is 63 INSERT INTO layer (id, is_outer, is_mirrored, name) VALUES (32, 1, 0, "bottom silk"); INSERT INTO layer (id, is_outer, is_mirrored, name) VALUES (63, 1, 1, "top silk"); --solder mask layers from 64 to 95 --bottom is 64, top is 95 --others make no sense, but I leave it there. INSERT INTO layer (id, is_outer, is_mirrored, name) VALUES (64, 1, 0, "bottom mask"); INSERT INTO layer (id, is_outer, is_mirrored, name) VALUES (95, 1, 1, "top mask"); --solder paste layers from 96 to 127 --bottom is 96, top is 127 --others make no sense, but I leave it there. INSERT INTO layer (id, is_outer, is_mirrored, name) VALUES (96, 1, 0, "bottom mask"); INSERT INTO layer (id, is_outer, is_mirrored, name) VALUES (127, 1, 1, "top mask"); COMMIT; --MP_/DoLK0lDm7CKr6Zd9hpf/99G Content-Type: text/plain Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=tree.txt pcb [id, name] N | +- component [component_id, refdes, value, ...] N | | | +- pcb [id, name] N | | | +- padstack [padstack_id, ...] N | | | | | +- oval [] N | | | | | +- rectangle [] N | | | | | +- polygon [] N | | | | | | | +- vertex [] 3+N | | | | | +- hole [] N | | | | | +- net [] 1 | | | +- hole [] N | | | +- line [] N | | | | | +- vertex [] 2+N | | | +- polygon [] N | | | +- vertex [] 3+N | +- hole [] N | +- line [] N | +- polygon [] N | +- pcb [] N --MP_/DoLK0lDm7CKr6Zd9hpf/99G--