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:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=UmWuwsazDUQvYxG7G2rXy2TR5vhI7ZwLtGHqPNOAyRE=; b=Hld9LMJJ3hxPJ+alxkrHo8hLFPnHEtllQIq5RruzKX24RIZjRf7Y4OKhv+7xftxAuI XNaNg2NWEcmcLfURdAR85+VVUAnLQCr7l3PuAQDDXvGamDRQ/Oud3D8BUMg6Sny+Yu6Z ioo0wvqLKi1QNXf6OTJxzgsubXd7nA5Qt7ETP7Yv9c0zktm+JygxF4iSdN2tibbVKPGP A88OZBpxjvp7uj5leD9TTu48uLsX89eekdGsafLb4V9v1DSm+8m/+zNPckZEF8XUf62g PPsBxu7kcTNHv96LmRdemW+Ispbu01J79AfElKAUeCS5dlNaioFz/MnXtNy1koSOXMsc E/XQ== MIME-Version: 1.0 X-Received: by 10.60.165.68 with SMTP id yw4mr71327594oeb.76.1427045391853; Sun, 22 Mar 2015 10:29:51 -0700 (PDT) In-Reply-To: References: Date: Sun, 22 Mar 2015 13:29:51 -0400 Message-ID: Subject: Re: [geda-user] A Python Gerber writer From: Jason White To: geda-user AT delorie DOT com Content-Type: multipart/mixed; boundary=047d7b450862a8fe6c0511e3e53d 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 --047d7b450862a8fe6c0511e3e53d Content-Type: text/plain; charset=UTF-8 Thanks to these guys (https://github.com/curtacircuitos/pcb-tools) who wrote an excellent gerber parser in python I was able to throw together a script that does exactly that. See pcb_tools_import.py in the repository for an example of importing a gerber and writing it back out. I have attached a screen shot with a side by side comparison of the input and output. The GLIF repository is located at: https://github.com/python50/GLIF On Sun, Mar 22, 2015 at 9:42 AM, Mitch Davis wrote: > Hi Jason, > > On Sun, Mar 22, 2015 at 9:19 AM, Jason White > wrote: >> >> I succeeded in making a usable, but unpolished, gerber writer. > > Very very interesting. I shall put that on my list of things to look at. > > I currently use gerbmerge's parser to do some manipulation of gerbers, > but it's far from ideal. Might it be possible to have a library that > reads in gerbers, makes it available for manipulation, then writes > them out again? > > Regards, > > Mitch. -- Jason White --047d7b450862a8fe6c0511e3e53d Content-Type: image/png; name="side_by_side_import_export.png" Content-Disposition: attachment; filename="side_by_side_import_export.png" Content-Transfer-Encoding: base64 X-Attachment-Id: f_i7kptmc10 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 kfoDs7VLWgAAAABJRU5ErkJggg== --047d7b450862a8fe6c0511e3e53d--