kurse:efcomputergrafik:kw49

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
kurse:efcomputergrafik:kw49 [2019/12/04 10:48] – created Ivo Blöchligerkurse:efcomputergrafik:kw49 [2019/12/05 06:47] (current) – [Klassen und Objektorientierte Programmierung] Ivo Blöchliger
Line 1: Line 1:
 +====== 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
 +<code python>
 +with open('Path/to/file', 'r') as content_file:
 +    content = content_file.read()
 +</code>
 +=== Text finden ===
 +https://www.geeksforgeeks.org/string-find-python/
 +<code python>
 +position = content.find("<path ",startPosition)  # die Startposition ist optional, kann gebraucht werden, um weitere Vorkommen zu finden.
 +if (position!=-1): # Wirklich was gefunden
 +  # tu was damit
 +</code>
 +=== Substring ===
 +<code python>
 +a="0123456789"
 +a[2:5] # -> liefert "234"
 +</code>
 +=== Text Analyse ===
 +Ist der Path-String einmal gefunden, geht es darum, diesen zu analysieren. Als erster Schritt soll dieser nach Leerschlägen aufgeteilt werden:
 +<code python>
 +txt = "foo bar baz boo"
 +items = txt.split(" ")
 +</code>
 +
 +=== Convertierung in Zahlen ===
 +<code python>
 +zahl = float("3.14")
 +</code>
 +
 +
 +
 +===== 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.
 +