Hmmm, that doesn't sound too good. It looks like I really didn't handle the foreground/background color selection too well. Try swapping "fg" and "bg" in the script. I don't know any easy way to automatically determine which is which. Let me take a stab at it today and see what I can some up with.
raoul -- In [email protected], "josh_eeg" <josh...@...> wrote: > > the script didn't stop on a 70 x 70 pixel file. I left it running hopeing it > would stop the file was over a gig... > > my previous post shown > > awk -f prog.awk pic.pbm > art.out > > --- In [email protected], "raoulduke_esq" <raoulduke_esq@> wrote: > > > > Pardon me if I am just being obtuse, but I could find no easy way to add an > > image or artwork to a layout. I've tried pstoedit but that utility (in > > addition to being broken if you are in a directory path that has a space in > > it) only works for text. > > > > Because I am under the gun, I had to gin up something to get a project out > > the door. So I came up with a quick and dirty solution. > > > > Step 1: Generate an ASCII PBM file - I use GIMP. A monochrome (black and > > white) image will be represented by a file full of "0" and "1". Call it > > something like "art.pbm". > > > > Step 2: Run the ASCII PBM file "art.pbm" through the following awk script > > and put the output into a file, call it "art.out". > > > > Step 3: Create a module library with a single component, call it something > > like "Logo". The library will be called "Logo.mod". > > > > Step 4: Edit the module library "Logo.mod", look for the $EndMODULE line, > > and copy the contents of "art.out" immediately before it. Save the file. > > > > Step 5: Edit the module library and move things around, add the module > > name, etc. > > > > Step 6: In PCBnew, add the module from the library and place it where you > > want. > > > > I hope this makes sense and helps someone other than me. And I hope that I > > have not reinvented the wheel. I'm sorry that I use awk as a script > > language of choice, I suppose I could clean it up as a Perl script if there > > is any interest. > > > > raoul > > > > > > ----------Cut Here---------- > > # This script will take an ASCII PBM B&W file and convert it to a series > > # of "DS" (Draw Segment) statements in PCBNEW syntax. The deltaX and deltaY > > # is defined in "step" which is in uints of 1/10 mil. The layer is > > currently > > # set to 21, the component layer silkscreen. Swap bg & fg based on whether > > # black or white is the foreground. > > # > > # State 0 : look for magic number - must be P1 (can be P4 for raw file) > > # State 1 : look for height & width > > # State 2 : process data > > # State 3 : done with data - skip the rest > > # > > BEGIN { state = 0; step = 40; layer = 21; fg = "1"; bg = "0"; } > > {if (NR == 1) { > > state = 1; > > if ($1 != "P1") { > > printf("Must supply an ASCII PBM image file\n"); > > exit 1 > > } > > next; > > } > > } > > /^#/ { next } # Comment line, skip it > > {if (state == 1) { > > width = $1; > > height = $2; > > buff = ""; > > state = 2; > > Y = - ((step * height) / 2); > > initX = - ((step * width) / 2); > > next; > > } > > } > > {if (state == 2) { > > buff = buff $1; > > if (length( buff ) >= width) { > > scanline = substr( buff, 1, width ); > > buff = substr( buff, width + 1 ); > > Y += step; > > X = initX; > > while ( Z1 = index( scanline, fg )) { > > scanline = substr( scanline, Z1 ); > > Z2 = index( scanline, bg ); > > scanline = substr( scanline, Z2 ); > > Z1 = step * Z1 + X; > > Z2 = step * Z2 + Z1 - 2 * step; > > X = Z2; > > printf( "DS %d %d %d %d %d %d\n", Z1, Y, Z2, Y, step, layer > > ); > > } > > height--; > > if (height == 0) > > state = 3; > > } > > } > > } > > {if (state == 3) { nextfile; }} > > ----------Cut Here---------- > > >
