====== 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.