[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

RE: gEDA-user: autogenerate footprints



Thanks for the examples DJ and John... 

Joel Ostheller
Digital Hardware Design Engineer
Email  : joel.a.ostheller@xxxxxxxx
Phone : 253.867.0407 

> -----Original Message-----
> From: geda-user-bounces@xxxxxxxxxxxxxx [mailto:geda-user-
> bounces@xxxxxxxxxxxxxx] On Behalf Of DJ Delorie
> Sent: Tuesday, January 02, 2007 2:54 PM
> To: geda-user@xxxxxxxxxxxxxx
> Subject: Re: gEDA-user: autogenerate footprints
> 
> 
> > Yeah, great idea... is there any standard Perl Script under svn that
> > most people use?
> 
> I have some perl scripts on gedasymbols you can copy routines out of.
> There isn't a "standard perl script" because that's not why people use
> perl - each script is custom.  At best, you might be able to cobble
> together a useful set of library functions which you'd call from perl.
> 
> Here's an example of a custom perl script to generate footprints.  It
> builds a quad flat pack style footprint.  There isn't much in here
> that's reusable, but you can see that it's easy to tweak it to change
> the generated footprint.
> 
> #!/usr/bin/perl
> # -*- perl -*-
> 
> $e = 0.50;
> $vpins = 25;
> $hpins = 25;
> $b2 = 0.225;
> $i2 = 0.9 + 0.4;
> $out = 1.2;
> 
> $pin = 1;
> $vy = ($vpins-1) * $e;
> $hx = ($hpins-1) * $e;
> 
> print "Element[\"\" \"TQFP-$vpinsx$hpins-$e\" \"\" \"\" 0 0 0 0 0 100
> \"\"] (\n";
> 
> for ($i=0; $i<$vpins; $i++) {
>     &pad(0, $e * $i, -1, 0);
>     $pin ++;
> }
> 
> for ($i=0; $i<$hpins; $i++) {
>     &pad($e * $i, $vy, 0, 1);
>     $pin ++;
> }
> 
> for ($i=0; $i<$hpins; $i++) {
>     &pad($hx, $vy - $e * $i, 1, 0);
>     $pin ++;
> }
> 
> for ($i=0; $i<$hpins; $i++) {
>     &pad($hx - $e * $i, 0, 0, -1);
>     $pin ++;
> }
> 
> sub pad {
>     my ($x, $y, $dx, $dy) = @_;
>     $x += $dx * ($out + $b2/2);
>     $y += $dy * ($out + $b2/2);
>     $x2 = $x + $dx * ($i2 - $b2);
>     $y2 = $y + $dy * ($i2 - $b2);
> 
>     printf("\tPad[%d %d %d %d %d %d %d \"%s\" \"%s\" \"square\"]\n",
> 	   &m($x), &m($y), &m($x2), &m($y2),
> 	   &m($b2), &m($e*0.51-$b2), &m(($e+2*$b2)/3),
> 	   $pin, $pin);
> }
> 
> sub m {
>     my ($mm) = @_;
>     return int($mm / 0.000254);
> }
> 
> print ")\n";
> 
> 
> 
> _______________________________________________
> geda-user mailing list
> geda-user@xxxxxxxxxxxxxx
> http://www.seul.org/cgi-bin/mailman/listinfo/geda-user


_______________________________________________
geda-user mailing list
geda-user@xxxxxxxxxxxxxx
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user