I'm not sure how that would end up looking but if you want to try it and see 
how it looks, I'd like to know how it comes out.  I believe the order of layers 
is silkscreen, solder mask, copper, then board, for both sides. The list of 
layers is in:

/usr/local/share/doc/kicad/help/file_formats/file_formats.pdf

Or where ever the KiCAD documentation files are stored on your system. I picked 
layer 21, the component side silk screen layer; layer 20 is the copper side.  
Remember that the silkscreen and solder mask tolerances are much greater than 
the copper traces.

raoul

--- In [email protected], "josh_eeg" <josh...@...> wrote:
>
> it worked great in ubuntu linux how would you do the same with different 
> layers? so if I had a pic and wanted it on the copper layer then to put this 
> silkscreen over it. that way I would have 3 tones. Or absence of solder mask 
> would give me 4. 
> 
> --- In [email protected], "raoulduke_esq" <raoulduke_esq@> wrote:
> >
> > I'm sorry, I didn't mean to be cryptic.  Below is the latest version of my 
> > awk script.  For non-Unix/Linux people, "awk" is a scripting language 
> > written many, many years ago and named for the initials of the three guys 
> > who initially developed it (Aho, Weinberger and Kernighan - names that 
> > should be familiar to old CS types).
> > 
> > Awk is part of the base user installation for Unix & Linux, of pretty much 
> > all flavors.  I can't speak for OS/X but I'd guess that if you have a shell 
> > in a window, you've got awk.  For the Windows crowd, I guess your best 
> > option is to install Cygwin and make sure you get awk with it.
> > 
> > The addition of the first line is just an old Unix/Linux trick based on the 
> > concept of a "magic number" which is a signature in the first few bytes 
> > used to identify the contents of files.  Note that this concept is foreign 
> > to MS where the file name extension (after the '.') is supposed to provide 
> > all the information about the file type.  Since this is prone to error, and 
> > really ineffective at documenting file contents, I prefer the Unix/Linux 
> > "magic number" route.  In this case, the magic number is "#!" ("shebang") 
> > which indicates that it is a script file, followed by the program to be 
> > used to interpret the script file.  By marking the file as executable you 
> > can execute it from the command line.  When you try to run the script, the 
> > loader first checks the magic number to determine what kind of executable 
> > it is (for example, it will fail to load a binary program compiled for a 
> > different computer or operating system), it sees the signature for the 
> > script and executes the specified interpreter instead (in this case 
> > /usr/bin/awk), passing the script to it.
> > 
> > What does this long winded historical explanation mean?  I was just trying 
> > to save you from having to type:
> > 
> > awk -f reformat.awk logo.bmp > logo.tmp
> > 
> > and reduce it to:
> > 
> > ./reformat.awk logo.bmp > logo.tmp
> > 
> > (For the observant, the "./" in front of the script is because we all know 
> > that you never include "." in your PATH environment variable - to avoid 
> > this, place the script in a convenient directory where you keep your other 
> > executables).
> > 
> > I'll attach my latest version below, which includes a few changes to deal 
> > with extra whitespace allowed by the informal specification of PNG files.  
> > I hope that this is able to help a few people.  I've been plinking away at 
> > a Perl script but my Perl is far more rusty than my awk.  Sorry about End 
> > Of Line (EOL) problems - it's not something that I worry about since I left 
> > Windoze far, far behind me.
> > 
> > raoul
> > 
> > --- In [email protected], "josh_eeg" <josheeg@> wrote:
> > >
> > > I am confused now... does that make things run with less user input or 
> > > make it output the logo correctly?
> > > If it is a working script could it be uploaded here or somewhere for 
> > > others?
> > > 
> > > Do I run that line in the command prompt?
> > > 
> > > --- In [email protected], "raoulduke_esq" <raoulduke_esq@> 
> > > wrote:
> > > >
> > > > For fun, make the first line of the awk script:
> > > > 
> > > > #!/usr/bin/awk -f
> > > > 
> > > > (obviously use the path to your awk).  Change the (I call it 
> > > > reformat.awk) script mode to executable and you can now:
> > > > 
> > > > >./reformat.awk logo.pbm >> logo.mod
> > > > 
> > > > And you're half way there - just edit to move the DS lines before 
> > > > $EndMODULE and you're done. 
> > > > 
> > > > 
> > > > raoul
> > 
> > ---------------------------- Cut Here -------------------------
> > #!/usr/bin/awk -f 
> > # This script will take an ASCII (also called "plain") PBM image file and
> > # convert it to a series of "DS" (Draw Segment) statements in PCBNEW syntax.
> > # The X & Y axis step size is defined in "step" which is in uints of 1/10
> > # mil (from the PCBNEW spec).  The PCB layer for the DS segments is 
> > currently
> > # set to 21, the component layer silkscreen but you can change that.  You
> > # can also 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) {
> >         if (NF < 2) next;   # Skip empty lines too
> >         width = $1;
> >         height = $2;
> >         if ((width < 1) || (height < 1)) {
> >             printf("Invalid width or height\n");
> >             exit 1
> >         }
> >         buff = "";
> >         state = 2;
> >         Y = - ((step * height) / 2);
> >         initX = - ((step * width) / 2);
> >         next;
> >     }
> > }
> > {if (state == 2)  {
> >         gsub( "[[:space:]]", "" );
> >         buff = buff $0;
> >         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 );
> >                 if (Z2 == 0)
> >                     Z2 = length( scanline ) + 1;
> >                 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 -------------------------
> >
>


Reply via email to