X-Authentication-Warning: delorie.com: mail set sender to geda-user-bounces using -f X-Recipient: geda-user AT delorie DOT com X-Envelope-From: paubert AT iram DOT es Date: Tue, 10 Jul 2012 00:45:59 +0200 From: Gabriel Paubert To: geda-user AT delorie DOT com Subject: Re: [geda-user] [PATCH] Allow to create metric Gerber and drill files, hopefully final version. Message-ID: <20120709224559.GB4355@visitor2.iram.es> References: <20120703140236 DOT GA12646 AT visitor2 DOT iram DOT es> <20120705101614 DOT GA19974 AT visitor2 DOT iram DOT es> <20120706202633 DOT GA28355 AT malakian DOT lan> <20120706213340 DOT GA30622 AT visitor2 DOT iram DOT es> <20120707104156 DOT 17641 DOT qmail AT stuge DOT se> <20120708042719 DOT GE1637 AT malakian DOT lan> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20120708042719.GE1637@malakian.lan> User-Agent: Mutt/1.5.20 (2009-06-14) X-SPF-Received: 2 X-Spamina-Bogosity: Unsure X-Spam-Score: -4.4 (----) X-Spam-Report: Content analysis details: (-4.4 points) pts rule name description ---- ---------------------- -------------------------------------------------- -1.8 ALL_TRUSTED Passed through trusted hosts only via SMTP -2.6 BAYES_00 BODY: Bayesian spam probability is 0 to 1% [score: 0.0003] 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 On Sat, Jul 07, 2012 at 09:27:20PM -0700, Andrew Poelstra wrote: > On Sat, Jul 07, 2012 at 12:41:56PM +0200, Peter Stuge wrote: > > Gabriel Paubert wrote: > > > @@ -668,7 +695,7 @@ gerber_set_layer (const char *name, int group, int empty) > > > } > > > /* Notice the last zeroes are literal zeroes here, a * > > > * x10 scale factor. v v */ > > > - pcb_fprintf (f, "X%06.0ml0Y%06.0ml0\r\n", > > > + pcb_fprintf (f, metric ? "X%06.0muY%06.0mu\r\n" : "X%06.0ml0Y%06.0ml0\r\n", > > > gerberDrX (PCB, pending_drills[i].x), > > > gerberDrY (PCB, pending_drills[i].y)); > > > > It seems there is a whitespace error in this hunk. > > > > Nope, it was actually the old whitespace that was wrong, hence > the funny-looking patch. > > However, the v's above are supposed to point to the extra 0's > on the imperial string, which I fixed. That is the only change > I made before pushing the patch. Thanks for pointing this out, I completely missed it, but I think that they point to the wrong 0 when looking at the source. Corrected in the following, with a fix for octogonal apertures in which I did a mistake and ended up with two metric conversion specifications. Note that I have touched a bit the whitespace at the beginning of the comments so that they start with a tab like the surrounding code lines. Now what would be the right solution to produce ncdrill files with 0.1 mil resolution? Adding a new conversion specifier ? (%md is taken, %mh for hole, %mX for eXcellon?) The fact that imperial Gerber have 2 orders or magnitude better resolution than the associated drill is a problem (25.4µm versus 0.254µm). At least metric gives micrometer resolution for both. Gabriel diff --git a/src/hid/gerber/gerber.c b/src/hid/gerber/gerber.c index 79c0447..b2567cb 100644 --- a/src/hid/gerber/gerber.c +++ b/src/hid/gerber/gerber.c @@ -240,7 +240,7 @@ fprintAperture (FILE *f, Aperture *aptr) break; case OCTAGON: pcb_fprintf (f, metric ? "%%AMOCT%d*5,0,8,0,0,%.3`mm,22.5*%%\r\n" - "%%ADD%dOCT%d*%%\r\n" : "%%AMOCT%d*5,0,8,0,0,%.3`mm,22.5*%%\r\n" + "%%ADD%dOCT%d*%%\r\n" : "%%AMOCT%d*5,0,8,0,0,%.4`mi,22.5*%%\r\n" "%%ADD%dOCT%d*%%\r\n", aptr->dCode, (Coord) ((double) aptr->width / COS_22_5_DEGREE), aptr->dCode, aptr->dCode); @@ -693,8 +693,8 @@ gerber_set_layer (const char *name, int group, int empty) Aperture *ap = findAperture (curr_aptr_list, pending_drills[i].diam, ROUND); fprintf (f, "T%02d\r\n", ap->dCode); } - /* Notice the last zeroes are literal zeroes here, a x10 scale factor. * - * v v */ + /* Notice the last zeroes are literal zeroes here, a x10 scale factor. * + * v v */ pcb_fprintf (f, metric ? "X%06.0muY%06.0mu\r\n" : "X%06.0ml0Y%06.0ml0\r\n", gerberDrX (PCB, pending_drills[i].x), gerberDrY (PCB, pending_drills[i].y));