Hallo Leute,
hab da mal eine Frage zu HPGL-Daten:
Wenn ich mir in Eagle mein Board mit dem CAM-Prozessor als HPGL ausgeben
lasse, bekomme ich z.B. folgenden Code:
IN; IP 0,0,100,100; SC 0,100,0,100;
SP 1;
PA 359,210;
PD;
PA 360,210;
PA 360,209;
PA 359,209;
PA 359,210;
PU;
Die einzelnen Befehle (IP, SP, PU, PD, PA) sind mir klar.
Was ich nicht verstehe, sind die Koordinaten. Wenn der Plotter mit '0,0'
und '100,100' initialisiert wird, warum liegen die 'PA-Koordinaten' dann
ausserhalb? Und wie funktioniert 'SC'? Mein Board hat die Maße 75x100
mm. Das passt ja gleich gar nicht zusammen. Kann mir da jemand Klarheit
verschaffen?
So wie ich das verstehe wird der Plotter mit 0,0 und 100,100
initialisiert, der Stift gewählt, dann werden die Koordinaten 359,210
angefahren und dann geht der Stift nach unten und fängt bei dieser
Position an zu zeichen. Im obigen Beispiel ein kleines Viereck. Aber
irgendwie will mir diese Logik nicht in den Kopf. Eigentlich sollten
doch die Initialisierungskoordinaten größer als die PA-Koordinaten
sein..?
Der Grund: ich fitzel gerade mit Java rum. Herrauskommen soll ein
einfaches Programm, was mir a) die HPGL-Daten auf den Bildschirm
zeichnet (funktioniert schon) und b) diese Daten auf die
LPT-Schnittstelle schreibt.
Mike M. schrieb:
> Kann mir da jemand Klarheit verschaffen?
Da fehlt jetzt eigentlich nur noch das Eagle-Projekt, dann könnte das
evtl. jemand nachvollziehen...
Gibst du bei der Ausgabe einen x- oder y-Offset an?
nein. das offset steht bei x/y = 0 inch. Ich dachte die projektdatei
spielt keine rolle, da ich das koordinatensystem von hpgl verstehen
will. aber gut... project siehe anhang
Hallo Mike,
Wenn ich das recht sehe, ist das ein winzig kleines Quadrat das zu da
zeichnen willst. Die X,Y Zahlenpärchen sind in 1/1000 inch = mil
Dein Quadrat ist nur 1 x 1 mil groß = 0.025 x 0.025 mm
Das stimmt irgendwie nicht mit dem von dir angehängten Datei der
Platine_LED.brd überein.
Du kannst ja mal folgendes probieren. Wähle bei CAM-Prozessor unter
anderm den Layer DIMENSION aus und lege ihn zum Beispiel auf die 9
und gib eine Datei an, die du nachher mit einem Texteditor anschaust.
Deine Platine hast einen Rahmen von 100 x 76.19 mm
Die linke untere Ecke sollte nun in der HPGL Datei bei x=0 und y=0
liegen.
Ist sie es nicht, muss du am Offset schrauben. So lange bis die linke
untere Ecke wirklich bei 0,0 ist
Aber zunächst mal muss du durch Auswahl der nötwendigen Layer dafür
sorgen,
daß in die HPGL-Datei der Inhalt deiner Platine inklusive des layers
DIMENSION geht.
Bernhard
Kann ja alles sein. Und das Board ist auch völlig egal. Die Plottdaten
sind nur ein Auszug und Beispielhaft. Ich kann Projekte laden wie ich
will, alle werden mit 0,0,100,100 initialisiert.
Was ich aber eigentlich wissen wollte: Was hat es mit diesen Koordinaten
zur Initialisierung auf sich? Wie ist dieses 'SC 0,0 100,100' zu
verstehen? Und warum liegen die PA-Punkte 'ausserhalb' von IP?
Ich gehe noch mit und denke mir das IP 0,0,100,100 die zur Verfügung
stehende Plottgrösse ist (Arbeitsbereich) Aber schon damit hab ich dann
meine Schwirigkeiten. Die Arbeitsfläche ist doch nicht nur 2,5x2,5 cm
groß?
Ich habe mir gerade mal ein neues, leeres Board erstellt (100x80mm) und
nur das DIMENSION-Layer via CAM als HPGL ausgegeben. Hier ist es das
selbe:
IN; IP 0,0,100,100; SC 0,100,0,100;
SP 8;
PA 10,10;
PD;
PA 10,3210;
PA 4010,3210;
PA 4010,10;
PA 10,10;
PU; SP 0; PA 0,0;
Das versteh ich einfach nicht...? Die Init-Koordinaten sollten doch min.
grösser als 4010 sein..?
Habe aber gerade mal nachgerechnet. 4010*0,025=100,25. Das wäre ja
(fast) richtig. Fehlt mir nur noch die Logik bei IP bzw. SC. Weis da
jemdand noch was zu berichten?
Hallo Mike,
Leider kann ich bei dem IN; IP 0,0,100,100; SC 0,100,0,100; nicht weiter
helfen.
SP 8; heist select Pen number 8 Er holt sich also Stift No 8 aus dem
Karussel.
PD = plotter pen down.
PA 10,10; hier ist der erste Fehler. Es müsste hier PA 0,0; heissen.
Du musst den Offset auf x = -0.01 und y= -0.01 stellen.
Ein Board 100x80mm bedeutet in mil:
x=3937.008 mil und y=3149.606 mil
4010*0,025=100,25 ist richtig gerechnet, aber ein Inch ist 25.4mm und
nicht 25.0 mm
Wenn du die 10 mil vom offset abziehst kommst du auf 100 mm
Es sollte am Ende also so aussehen:
SP 8;
PA 0,0;
PD;
PA 0,3150;
PA 3937,3150;
PA 3937,0;
PA 0,0;
PU;
SP 0;
ciao
Bernhard
Nix mit mil!
Koordinaten in HPGL sind in "plotter units". Und das sind 25µm, also
1016 units pro Zoll.
IP 0,0,100,100;
legt erstmal einfach nur 2 Punkte fest (in plotter units):
P1(0,0) und P2(100,100)
SC 0,100,0,100;
legt ein User-Koordinatensystem fest:
Der Punkt 0,0 (in User-Koordinaten) entspricht P1 (aus dem IP Kommando,
also in diesem Fall hier 0,0 in plotter units).
Der Punkt 100,100 (in User-Koordinaten) entspricht P2 (aus dem IP
Kommando, also in diesem Fall hier 100,100 in plotter units).
Das Ganze ist also im Endeffekt eine 1:1 Skalierung. Alle nachfolgenden
Koordinten sind also in 25µm Einheiten.
Die Rechnung stimmte trotzdem nicht ganz. Da der Startpunk auf den
Koordinaten 10,10 liegt, ist das Rechteck 4000x3200 plotter units groß,
also genau 100x80mm²
Mehr dazu gibts z.B. hier:
http://en.wikipedia.org/wiki/HPGLhttp://www.sxlist.com/techref/language/hpgl/commands.htmhttp://www.sxlist.com/techref/language/hpgl/ip.htmhttp://www.sxlist.com/techref/language/hpgl/sc.htmhttp://cstep.luberth.com/HPGL.pdf
Hui! Das is ja ma fein. So hab ich mir das gedacht. Vielen Dank! Die
Wiki-Seite hatte ich inzwischen auch schon gefunden.
Mit diesen Informationen kann ich doch schon viel besser umgehen
(Programmieren).
Jetzt muss ich doch noch mal genauer nachfragen.
IP 0,0,100,100;
SC 0,100,0,100;
IP X1,Y1,X2,Y2 is klar, hab ich kapiert.
SC Xmin,Xmax,Ymin,Ymax is noch ni ganz klar.
laut der Doku bedeutet das, daß Xmin & Ymin der Punkt P1 und Xmax & Ymax
der Punkt P2 ist. Und eine PlotterUnit sind ja 0,025mm.
Heisst das, wenn ich z.B. SC 0,1080,0,1200 nehmen würde, würde ich
meinen Bereich auf A4-Format 'hoch-skalieren'?
Und ich schätze mal, das wenn ich auf die zu plottende Fläche schliessen
will, nur die Möglichkeit habe mir aus der Ausgabedatei den grössten
Wert rauszusuchen, evtl. den Startpunkt davon abziehen und mit den
PlotUnits verrechnen. Und das Ergebnis dann als 'Dokumentgrenze' zu
betrachten. Oder hab ich da noch was übersehen?
Dein ursprünglich 100x80mm² großes Rechteck hätte jetzt auf dem Papier
noch etwa 9.26x6.67mm². Also in x-Richtung um den Faktor 10.8 und in
y-Richtung um den Faktor 12 kleiner. Und wär auch noch ein Stück nach
links unten gerutscht.
Was die 'Dokumentgrenze' angeht, der Plotter/Drucker clipped spätestens
an seinen physikalischen Grenzen. Für Deinen Viewer siehst Du am
besten/einfachsten eine manuell Einstellung des Papierformats vor.
Du mußt dabei aber auch noch das IW-Kommando beachten.
Was hängt denn eigentlich an Deinem LPT dran?
CU
am LPT hängt (noch) nix. da soll aber mal eine steppersteuerung dran.
und dann dacht ich mir, in meinem jugendlichen leichtsinn, das ich die
plottkommandos/plottkoordinaten in schritte verwandeln kann und sich
dann ein paar motoren anfangen zu drehen. allerdings dauert das noch
eine weile. erst bau ich die fräse ;-) mechanisch auf, nebenbei schraub
ich ein wenig am programm rum und zum schluss kommt dann die steuerung +
umsetzung der kommandos in 'HI/LOW' signale. (hoffentlich klappt das
auch mit java ohne grössere timing probleme - aber eins nach dem
anderen)
Hehe, sowas in der Richtung hab ich auch vor :)
Wird aber auch noch ne Weile dauern :(
Wenn Dein Rechner schnell genug ist könnte es klappen. Wenn nicht kannst
Du ja auch einfach erstmal die Schrittfolgen vorrausberechnen und dann
nur noch 'abspielen'. Brauchst Du ja eigentlich für die
Bildschirmanzeige sowieso.
Wünsch Dir jedenfalls viel Erfolg dabei.
CU
... schrieb:
> einfach erstmal die Schrittfolgen vorrausberechnen und dann> nur noch 'abspielen'. Brauchst Du ja eigentlich für die> Bildschirmanzeige sowieso.
das hatte ich sowieso so geplant.
Ich werd wohl zum Ende der nächsten Woche die ersten Bilder meiner Fräse
hier mal präsentieren. so long...