> Looks like that program just reads in a PBM, inverts all the pixels, > and writes it back out as a PBM. I'm not seeing anything that > translates to PCB file format. Did you post the right program?
You're right, wrong program. This one uses square vias with zero-sized holes, probably could be converted to spit out an Element with pads instead. #!/usr/bin/perl # -*- perl -*- open(PGM, $ARGV[0]); $sig = <PGM>; if ($sig !~ /P5/) { print "not P5\n"; exit (1); } $sig = <PGM>; $l = <PGM>; ($w,$h) = split(' ', $l); $l = <PGM>; ($max) = split(' ', $l); print STDERR "w $w h $h max $max\n"; printf "PCB[\"\" %d %d]\n", $w * 2500, $h * 2500; print ' Grid[10.00000000 0 0 0] Cursor[118793 106348 3.000000] Thermal[0.500000] DRC[699 400 800 800] Flags(0x0000000000000040) Groups("1,s:2,c:3:4:5:6:7:8") Styles["Signal,1000,3600,2000,1000:Power,2500,6000,3500,1000:Fat,4000,6000,3500,1000:Skinny,600,2402,1181,600"] '; for ($y=0; $y<$h; $y++) { for ($x=0; $x<$w; $x++) { $r = read(PGM, $byte, 1); $byte = ord($byte); if ($byte) { $diam = 2500 * (255-$byte) / $max; printf("Via[%d %d %d 0 0 1 \"\" 0x00000102]\n", $x * 2500, $y * 2500, $diam); } } } print while <DATA>; __END__; Layer(1 "component") ( ) Layer(2 "solder") ( ) Layer(3 "GND") ( ) Layer(4 "power") ( ) Layer(5 "signal1") ( ) Layer(6 "signal2") ( ) Layer(7 "unused") ( ) Layer(8 "unused") ( ) Layer(9 "silk") ( ) Layer(10 "silk") ( ) _______________________________________________ geda-user mailing list geda-user@moria.seul.org http://www.seul.org/cgi-bin/mailman/listinfo/geda-user