www.delorie.com/archives/browse.cgi   search  
Mail Archives: geda-user/2015/03/21/18:20:44

X-Authentication-Warning: delorie.com: mail set sender to geda-user-bounces using -f
X-Recipient: geda-user AT delorie DOT com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20120113;
h=mime-version:date:message-id:subject:from:to:content-type;
bh=C9Q4rMEopNb+iVoFsyQx/trqFvq6XDIJhYHGL3BR6YI=;
b=f/NjjVtjPn5waJ+FbxBtUKMw9XhNmRwwLdwZAs8fbZPH33o1tp3vVJI599JHGvfXNK
CEtdyTI+7gUdPZR+FKYt1ZBTsUstj3iof3rwRfwH4pINy4Qq5CdntCV59Zt0eHt/N3FU
gJq/LEs5GgJa2v8lmIWYHEfEWoxo/2sBCmACGCznMyuZR8zu1YLzKpKDL7E40bJjhoET
h78Zj0+pNxqEVhS1EC/p91fWzobLwboozZL8/OBqHdGp9jf597EMLzJuQoek9rUi2irc
4to6CN2O7ocYZRCDPoiSZXeHLrNSoMV/WuGPW3KZrCIvkDesEiCqWqeNgySfLv8DD78N
DfGw==
MIME-Version: 1.0
X-Received: by 10.202.168.15 with SMTP id r15mr3629857oie.92.1426976390500;
Sat, 21 Mar 2015 15:19:50 -0700 (PDT)
Date: Sat, 21 Mar 2015 18:19:50 -0400
Message-ID: <CAOFvGD7aLirsi6WLAgSLZinM4FUHVBYm+_KTUnj9KeLm_i_1Bw@mail.gmail.com>
Subject: [geda-user] A Python Gerber writer
From: Jason White <whitewaterssoftwareinfo AT gmail DOT com>
To: geda-user AT delorie DOT com
Reply-To: geda-user AT delorie DOT com

--001a113c328cdc17e90511d3d45c
Content-Type: text/plain; charset=UTF-8

Hello, today I spent a while toying around with the idea of creating a
gerber writer in python. This is in order to facilitate the goal of
creating multilayer PCBs with buried vias.

I succeeded in making a usable, but unpolished, gerber writer.


It takes primitives (instances of classes) such as text, lines,
circles, and polygons and writes them out using the standard gerber
RS-274X format.

Check out the attached code, screenshot, and gerber files!

Here is the example code used to generate export2.gbr: (note, the
actual code uses micrometers as units for coordinates, I replaced them
with the equivalent mm values for readability)

writer=gerber_writer("export2.gbr")

writer.primitives=[
line(1, 1, 2, 2, "C", 0, "copper", thickness=0.25, clearance=None),
line(1, 2, 2, 3, "R", 0, "copper", thickness=0.5, clearance=None),
line(1, 3.5, 2, 3.5, "C", 0, "copper", thickness=0.25, clearance=None),

line(1, 4, 2, 4, "R", 0, "copper", thickness=0.25, clearance=None),
line(2.5, 1, 2.5, 1, "R", 0, "copper", thickness=1, clearance=None),

circle(0, 0, 1, 0, "copper", thickness=0.5, clearance=None),
circle(0, 2, 1, 0, "copper", thickness=0.5, clearance=None),
circle(3.5, 3, 1, 0, "copper", thickness=1.25, clearance=None),


polygon(1, 0, 1, [[3,0], [4,0], [4,1.5],  [2.5,1.5], [3,1]], 0,
"copper", thickness=0.0, clearance=None),
text(0, -1.5, "Hello!", 1, 0, 0, "copper", thickness=0.15, clearance=None),

text(-5, 0, "Any Angle Text", 0.25, 45, 0, "copper", thickness=0.04,
clearance=None)
]

writer.write()



With a bit more polish and another layer of abstraction to handle
groups and layers, this will easily be capable of generating the
Gerbers for an entire (hard-coded) board.


Mail server rejected the zip file with the source code, so ....
You can download the sources and the gerbers here (glif.zip, 9.1K):
https://drive.google.com/file/d/0BwP0qhqyaTIIeUV1YVo3MDNpbHM/view?usp=sharing


-- 
Jason White

--001a113c328cdc17e90511d3d45c
Content-Type: image/png; name="gerber.png"
Content-Disposition: attachment; filename="gerber.png"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_i7jjr7ky1

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
+X8//wGm8hDg55K7DQAAAABJRU5ErkJggg==
--001a113c328cdc17e90511d3d45c--

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019