#!/usr/bin/perl # # # Der der Autor ist kein geringerer wie der Smilie # Also Fragen zu Hpgl oder Plotter, # möglicherweise kann ich ja helfen # # Also ganz einfach die Layer.Dateien mit diesen Program erzeugen # mit "Program pcb-Datei" # das ganze in einem Verzeichnis wo ihr auch schreibrechte habt # und dann ganz einfach den gewünchten Layer auf den Plotter kopieren # zBsp. so "cat Layer.1.jenachdem.hpgl > /dev/lp0 # den Stift müßt ihr dem Plotter in die Hand geben # und den Stiftrevolver entnehmen daß es eine Kollision giebt. if( $ARGV[0] ) { } else{print "use ".$0." [pcb-file] to convert to hpgl\n"; exit;}; sub abschnitt { close(DATEI); if(/Layer.(\d)\s.(\w+)../) { $da="Layer.$1.$2.hpgl"; } open(DATEI , ">$da"); } sub via { open(DATE,">>Layer.Via.hpgl"); if(/Via.(\S+)\s(\S+)\s(\S+)\s(\S+)/) { print(DATE "PA".($1).",".($2).";CI".($4).";"); } close(DATE); } sub pin { open(DATE,">>Layer.Pin.hpgl"); if(/\tPin.(\S+)\s(\S+)\s(\S+)\s(\S+)/) { print(DATE "PA".($1).",".($2).";CI".($4).";"); } close(DATE); } sub text { open(DATE,">>Layer.Text.hpgl"); if(/\tText.(\S+)\s(\S+)\s(\S+)\s(\S+)\s"(\S+)"/) { if($3==0){$di=";DI0,1;";}; if($3==1){$di=";DI1,0;";}; print(DATE "PA".$1.",".$2.$di."SI".($4/450).",".($4/675).";LB".$5."\e;"); } close(DATE); } sub linie { if(/\tLine.(\S+)\s(\S+)\s(\S+)\s(\S+)/) { print (DATEI "PU".($1).",".($2).";PD".($3).",".($4).";PU;"); } } sub arc { if(/\tArc.(\S+)\s(\S+)\s(\S+)\s(\S+)\s(\S+)\s(\S+)\s(\S+)/) { if($6==90){$sin=1;$cos=0;} if($6==-90){$sin=-1;$cos=0;} if($6==0){$sin=0;$cos=1;} if($6==180){$sin=0;$cos=-1;} if($6==-180){$sin=0;$cos=-1;} if($6==270){$sin=-1;$cos=0;} if($6==-270){$sin=1;$cos=0;} print (DATEI "PA".($1-($3*$cos)).",".($2+($3*$sin)).";PD;AA".($1).",".($2).",".($7*(-1)).";PU;"); } } sub polygon { if(/\t\t.(\S+)\s(\S+).\s.(\S+)\s(\S+).\s.(\S+)\s(\S+).\s.(\S+)\s(\S)./) { print (DATEI "PA".$1.",".$2.";RA".$5.",".$6.";"); } } # ist noch nicht eingebunden. #sub polygon #{ #s/\t\t./PU/; #s/\s/,/; #while(/\)\s\(/) #{s/\)\s\(/\;PD/;} #while(/\S\s\S/) #{s/\s/,/;} #s/\)/\;PU\;/; #print (DATEI $_); #} open(DATE,">Layer.Via.hpgl"); close(DATE); open(DATE,">Layer.Text.hpgl"); print(DATE "DT\e;"); close(DATE); open(DATE,">Layer.Pin.hpgl"); close(DATE); while(<>) { if(/\tPin/){&pin} if(/Layer/){&abschnitt;} if(/Via/){&via;} if(/\tArc/){&arc;} if(/\tLine/){ &linie;} if(/\t\t/){&polygon;} if(/\tText\(/){&text;} } close(DATEI);