HPGL für Penman konvertieren
Das HP-GL-Format ist der Sprache des Penman sehr ähnlich. Deshalb lässt sich die Konvertierung von der FormaleSprachen formalen Sprache HPGL zu der Sprache des Penman sehr einfach gestalten.
Es gibt auch den erweiterten Befehlsatz des HP-GL/2. Diesen brauche ich nicht.
Die HPGL-Befehle lauten
- PA: Stift zu absoluten Koordinaten bewegen
- PR: Stift um Anzahl von Einheiten bewegen
- PD: Pen down
- PU: Pen up
- SP: Select pen
Die Übersetzung geht sehr einfach ohen Zustandsautomaten
- "PA" --> "A, \r\n"
- "PR" --> "R, \r\n"
- "PD" --> "D M "
- "PU" --> "U M "
- "SP" --> "U\r\nP "
- vorsicht, es muss sichergestellt werden, dass der Stift vor denm Wechsel gehoben wird, sonst mecker [[Penman]
- Außerdem ist der Wertebereich für Penman 1 bis 3
- ";" --> ",\r\n"
Übersetzung mit LinuxSed sed
Mit dem Programm Inkscape lassen sich die HPGL-Dateien erzeugen.
hpgl2pl.sh
#!/bin/bash
cat $1 | sed 's/IN;/H\r\nI\r\nW1\r\nA\r\n/g' | sed 's/PU;/U,\r\n/g' | sed 's/\;/ \r\n/g' | sed 's/PU/U\ M\ /g' | sed 's/PD/D\ M\ /g' | sed 's/\SP/U,\r\nP/g' > $2
cat $1 | sed 's/IN;/H\r\nI\r\nW1\r\nA\r\n/g' | sed 's/PU;/U,\r\n/g' | sed 's/\;/ \r\n/g' | sed 's/PU/U\ M\ /g' | sed 's/PD/D\ M\ /g' | sed 's/\SP/U,\r\nP/g' > $2
HPGL-Datei
(;;test.hpgl) IN;SP1;PU8682,2350;PD8681,2375;PD8677,2398;PD8670,2420;PD8660,2440;PD8648,2459;...;PU;
Penman-Datei
(;;test.pl) H I W1 A U, P1 U M 8682,2350 D M 8681,2375 D M 8677,2398 D M 8670,2420 D M 8660,2440 D M 8648,2459 ... U,
HPGL-Viewer
Siehe auch •