[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