5. Anbindung weiterer Plottermodelle & Geräteprofile¶
LINTO beschränkt sich nicht auf den Mutoh XP-500. Jedes unterstützte Plottermodell wird über eine deklarative YAML-Profildatei beschrieben. LINTO liest Profile aus zwei Orten und stellt sie im Dialog Geräte-Einstellungen zur Auswahl bereit:
- Mitgelieferte Profile aus der Installation (
src/linto/resources/devices/im Quellcode). - Eigene Profile in
~/.config/linto/devices/. Ein Profil dort mit demselben Dateinamen wie ein mitgeliefertes ersetzt dieses. So kannst du z. B.roland_cm_24.yamlanpassen, ohne die Installation zu verändern.
1. Eigene Geräteprofile anlegen (~/.config/linto/devices/*.yaml)¶
Um ein weiteres Plottermodell einzubinden, legst du eine neue Datei ~/.config/linto/devices/<model_id>.yaml an. Am schnellsten kommst du dorthin über die Ordner-Schaltfläche neben Modellprofil im Dialog Geräte-Einstellungen: Sie legt den Ordner an und öffnet ihn im Dateimanager. Der Dateiname muss zur model_id in der Datei passen. Neue Profile erscheinen, sobald du den Dialog Geräte-Einstellungen das nächste Mal öffnest.
Als Ausgangspunkt eignet sich eine Kopie eines ähnlichen mitgelieferten Profils (siehe die Profilliste auf GitHub). Enthält ein Profil einen Fehler, überspringt LINTO es und schreibt eine Warnung ins Terminal. Wenn dein Profil funktioniert, teile es gern unter Hardware reports.
Beispiel 1: Flachbettplotter (roland_dxy.yaml, Ursprung unten links)¶
model_id: "roland_dxy"
name: "Roland DXY-1300 Flachbett"
manufacturer: "Roland DG"
emulation: "HP-GL / RD-GL"
protocol: "hpgl"
origin: "bottom_left" # Flachbettplotter: Ursprung unten links
units_per_mm: 40.0 # Auflösung: 0,025 mm pro Schritt
max_pens: 8 # 8-Stift-Wechsler
swap_xy: false
invert_x: false
invert_y: false
rotation_deg: 0
connection:
baudrate: 9600
bytesize: 8
parity: "N"
stopbits: 1
rtscts: true
xonxoff: false
margins_mm:
default:
top: 8.0
bottom: 8.0
left: 8.0
right: 8.0
default_margin_profile: "default"
Beispiel 2: Rollenplotter mit allen Optionen (mutoh_xp500.yaml, Ursprung zentriert)¶
model_id: "mutoh_xp500"
name: "Mutoh XP-500"
manufacturer: "Mutoh"
emulation: "HP-7585B"
protocol: "hpgl"
origin: "center"
units_per_mm: 40.0
max_pens: 8
max_speed_mm_s: 900.0
travel_speed_mm_s: 900.0
pen_change_time_s: 2.5
pen_actuation_time_s: 0.04
auto_pen_force: true
force_unit: "grams"
decimal_speed: true
swap_xy: true
invert_x: false
invert_y: true
rotation_deg: 0
connection:
baudrate: 19200
bytesize: 8
parity: "N"
stopbits: 1
rtscts: true
xonxoff: false
margins_mm:
exp:
top: 25.0
bottom: 5.0
left: 5.0
right: 5.0
norm:
top: 35.0
bottom: 15.0
left: 15.0
right: 15.0
type1:
top: 25.0
bottom: 5.0
left: 11.0
right: 11.0
type3:
top: 25.0
bottom: 10.0
left: 10.0
right: 10.0
default_margin_profile: "exp"
2. Referenz aller YAML-Felder¶
2.1 Identifikation & Protokoll¶
| Feld | Typ | Standardwert | Beschreibung |
|---|---|---|---|
model_id |
string |
Dateiname ohne .yaml |
Eindeutige interne Kennung des Plottermodells (z. B. "mutoh_xp500", "hpgl_generic"). |
name |
string |
"Unknown Plotter" |
Anzeigename des Modells in der Geräteauswahl. |
manufacturer |
string |
"Unknown" |
Herstellername (z. B. "Mutoh", "Roland", "Graphtec"). |
emulation |
string |
"HP-7585B" |
Emulationskennung (zur Information und zum Abgleich mit der OI;-Antwort). |
protocol |
string |
"hpgl" |
Befehlssprache des Plotters (aktuell "hpgl"). |
2.2 Koordinatensystem & intrinsisches Achsen-Mapping¶
LINTO arbeitet im Layout-Modus mit Blattkoordinaten in Millimetern (Ursprung oben links, +X nach rechts, +Y nach unten). Der HP-GL-Emitter rechnet diese Koordinaten zunächst in das zentrierte bzw. eckenbasierte kartesische Blattkoordinatensystem (+X rechts, +Y oben) um und wendet darauf das intrinsische Hardware-Achsen-Mapping des Geräteprofils an:
| Feld | Typ | Standardwert | Beschreibung |
|---|---|---|---|
origin |
string |
"center" |
"center": Ursprung (0,0) liegt in der Mitte des plottbaren Hard-Clip-Fensters (z. B. Mutoh XP-500, Großformat-Rollenplotter)."bottom_left": Ursprung (0,0) liegt unten links (z. B. klassische Flachbettplotter). |
units_per_mm |
float |
40.0 |
Plotter-Schritte pro Millimeter (40.0 entspricht 0,025 mm/Unit, 100.0 entspricht 0,01 mm/Unit). Wird bei einer Hardware-Abfrage (OF;) automatisch aktualisiert. |
rotation_deg |
int |
0 |
Intrinsische Grunddrehung der Hardware-Achsen gegen den Uhrzeigersinn (0, 90, 180, 270). |
invert_x |
bool |
false |
Spiegelt die X-Achse vor dem Achsentausch. |
invert_y |
bool |
false |
Spiegelt die Y-Achse vor dem Achsentausch. |
swap_xy |
bool |
false |
Vertauscht X- und Y-Achse nach Rotation/Spiegelung. Beim Mutoh XP-500 (swap_xy: true, invert_y: true) ist die Plotter-X-Achse die Papier-Vorschubrichtung (nach unten positiv) und die Plotter-Y-Achse die Wagenbewegung (nach rechts positiv). |
Note
Die im Dialog Geräte-Einstellungen und im Plot-Dock einstellbaren Achsen-Optionen sind Benutzer-Korrekturen, die zusätzlich zum intrinsischen Mapping des Geräteprofils angewendet werden (Standard: keine Korrektur).
2.3 Stifte, Stifterkennung & Kinematik (Plotzeit-Schätzung)¶
| Feld | Typ | Standardwert | Beschreibung |
|---|---|---|---|
max_pens |
int |
8 |
Maximale Anzahl der Stifte im Magazin/Karussell. |
auto_pen_force |
bool |
false |
true, wenn der Plotter über eine automatische Stifterkennung mit automatischer Andruckregelung verfügt (wie der Mutoh XP-500 über codierte Stifthalter für Tusche, Bleistift, Kugelschreiber etc.).• Ist auto_pen_force: true, bleibt die Option »Manuellen Stiftandruck (FS) senden« im Plot-Dock standardmäßig deaktiviert, damit die Hardware den Andruck automatisch wählt (kann bei Bedarf im Plot-Dock aktiviert werden).• Ist auto_pen_force: false, ist die Option im Plot-Dock standardmäßig aktiviert, sodass die im Stifte-Dock hinterlegten FS-Werte gesendet werden. |
force_unit |
string |
"grams" |
Einheit für den FS-Befehl:• "grams": Direkte Übergabe der Grammzahl (z. B. FS30; für 30 g beim Mutoh XP-500).• "hp_level": Umrechnung der Grammzahl auf HP-Stufen 1..8 (FS1; bis FS8;). |
decimal_speed |
bool |
true |
Wenn true, erlaubt VS Nachkommastellen (z. B. VS12.5;), andernfalls wird auf ganze cm/s gerundet. |
max_speed_mm_s |
float |
900.0 |
Maximale Zeichengeschwindigkeit entlang einer Achse in mm/s (Obergrenze für die Plotzeit-Schätzung). Beim Mutoh XP-500: 900 mm/s (1272 mm/s diagonal). |
travel_speed_mm_s |
float |
900.0 |
Eilgang-Geschwindigkeit bei angehobenem Stift (PU) in mm/s für die Plotzeit-Schätzung und den Echtzeit-Emulator. |
pen_change_time_s |
float |
2.5 |
Mechanische Dauer eines physischen Stiftwechsels (SPn;) am Karussell in Sekunden für die Plotzeit-Schätzung. |
pen_actuation_time_s |
float |
0.04 |
Dauer eines einzelnen Pen-Down/Pen-Up-Hubzyklus in Sekunden. |
2.4 Serielle Schnittstelle (connection)¶
Definiert die Vorgabewerte beim Anlegen oder Auswählen des Geräteprofils im Dialog Geräte-Einstellungen:
| Feld | Typ | Standardwert | Beschreibung |
|---|---|---|---|
baudrate |
int |
19200 |
Standard-Baudrate (z. B. 9600, 19200). |
bytesize |
int |
8 |
Anzahl der Datenbits (7 oder 8). |
parity |
string |
"N" |
Parität: "N" (Keine), "E" (Gerade / Even), "O" (Ungerade / Odd). |
stopbits |
int |
1 |
Anzahl der Stoppbits (1 oder 2). |
flow_control |
string |
"rtscts" |
Flusssteuerung: "rtscts" (Hardware-Handshake RTS/CTS), "xonxoff" (Software-Handshake XON/XOFF) oder "none". Alternativ werden auch die booleschen Felder rtscts: true/false und xonxoff: true/false ausgewertet. |
2.5 Randprofile (margins_mm & default_margin_profile)¶
Unter margins_mm können ein oder mehrere benannte Randprofile hinterlegt werden. Jedes Profil gibt die nicht beplottbaren Ränder (für Andruckrollen und Greifer) in Millimetern an:
top: Rand an der Papiereinzugskante (Vorderkante / Leading Edge)bottom: Rand an der Hinterkante (Trailing Edge)left: Linker Seitenrand (Andruckrolle links)right: Rechter Seitenrand (Andruckrolle rechts)default_margin_profile: Schlüssel des standardmäßig ausgewählten Randprofils (z. B."exp"oder"default").
3. Geräte-Import aus Inkcut (tools/import_inkcut_devices.py)¶
LINTO liefert ein Import-Werkzeug mit, mit dem du alle HP-GL-Gerätetreiber aus einer Inkcut-Installation (manifest.enaml) direkt in gebrauchsfertige LINTO-Profile konvertieren kannst:
# Geräte aus Inkcut einlesen und auflisten:
python3 tools/import_inkcut_devices.py --list-only
# Profile nach src/linto/resources/devices/ konvertieren:
python3 tools/import_inkcut_devices.py
LINTO bringt bereits über 25 vorinstallierte Profile für Modelle von Roland (Stika SV-8/12/15, CAMM-1), Graphtec (CE5000), US Cutter (Refine MH-721/1351), Secabo, Summa, Sekonic und weitere mit.
Note
Hinweis zu Schneideplottern (Cutter): Viele dieser aus Inkcut übernommenen Modelle sind Schneideplotter. Sie funktionieren in LINTO hervorragend mit einem Stifteinsatz als Zeichenplotter. Das Schneiden von Folien mit Messerklingen wird noch nicht unterstützt, da die dafür notwendige Schleppmesser-Offset-Kompensation noch fehlt.