====== Source Code ======
{{ :kurse:efcomputergrafik:svg2gcode.zip |svg2gcode.zip}}
===== Text-Analyse mit Python =====
=== Datei einlesen ===
Von https://stackoverflow.com/questions/7409780/reading-entire-file-in-python
with open('Path/to/file', 'r') as content_file:
content = content_file.read()
=== Text finden ===
https://www.geeksforgeeks.org/string-find-python/
position = content.find("
=== Substring ===
a="0123456789"
a[2:5] # -> liefert "234"
=== Text Analyse ===
Ist der Path-String einmal gefunden, geht es darum, diesen zu analysieren. Als erster Schritt soll dieser nach Leerschlägen aufgeteilt werden:
txt = "foo bar baz boo"
items = txt.split(" ")
=== Convertierung in Zahlen ===
zahl = float("3.14")
===== Klassen und Objektorientierte Programmierung =====
* Klassen: Einheit aus Daten und Code, der diese Daten "verwaltet".
* Klasse: Vorlage (Keksform), daraus werden Instanzen (Kekse) generiert. Jede Instanz hat ein "eigenes Datenset".
===== SVG-Pfad Spezifikation =====
Dokumentation:
* Intro: https://www.w3schools.com/graphics/svg_path.asp
* Bisschen ausführlicher: https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths
* Specs: https://www.w3.org/TR/svg-paths/
===== G-Code für den Plotter =====
Der Nullpunkt befindet sich bei den Radien $r_1=r_2=1445$ (in mm). Pro Motorschritt verändern sich die Radien um $\approx 0.0157029$ (mm). Die Motoren haben einen Abstand von 1930 mm.
Der G-Code bezieht sich direkt auf die Motorenschritte (was eigentlich gerade nicht der Sinn von G-Code ist).
Nur G1 (lineare Interpolation) ist implementiert:
* G1 X-400 Y800 (Gehe zur absoluten Position -400 Schritte (Motor links) und +800 Schritte (Motor rechts).
* G1 Z0 (Stift hoch, nicht zeichnen)
* G1 Z1 (Stift runter, zeichnen)
Nach jedem Kommando muss auf ein 'OK\n' gewartet werden.