import re from pyscript import document, window from schraegbild.svg_builder import SchraegbildBuilder # Globale Variable, um den aktuellen SVG-String für den Download zwischenzuspeichern aktuelles_svg = "" def zeichne_koordinatensystem(event=None): global aktuelles_svg # 1. Werte auslesen wie bisher len_x1 = int(document.querySelector("#len-x1").value) len_x2 = int(document.querySelector("#len-x2").value) len_x3 = int(document.querySelector("#len-x3").value) neg_x1 = int(document.querySelector("#neg-x1").value) neg_x2 = int(document.querySelector("#neg-x2").value) neg_x3 = int(document.querySelector("#neg-x3").value) mod_x1 = int(document.querySelector("#mod-x1").value) mod_x2 = int(document.querySelector("#mod-x2").value) mod_x3 = int(document.querySelector("#mod-x3").value) show_labels = document.querySelector("#show-labels").checked show_coords = document.querySelector("#show-coords").checked punkte_text = document.querySelector("#punkte-input").value # 2. Punkte parsen punkte_liste = [] pattern = re.compile(r"([A-Za-z0-9_]+)\s*\(\s*([-\d.]+)\s*\|\s*([-\d.]+)\s*\|\s*([-\d.]+)\s*\)") for zeile in punkte_text.splitlines(): match = pattern.search(zeile) if match: name = match.group(1) x1 = float(match.group(2)) x2 = float(match.group(3)) x3 = float(match.group(4)) punkte_liste.append({"name": name, "coords": (x1, x2, x3)}) # 3. Builder aufrufen builder = SchraegbildBuilder( len_x1, len_x2, len_x3, neg_x1, neg_x2, neg_x3, mod_x1, mod_x2, mod_x3, punkte=punkte_liste, show_labels=show_labels, show_coords=show_coords ) # SVG generieren und global speichern aktuelles_svg = builder.generiere_koordinatensystem() # Im UI anzeigen document.querySelector("#canvas-container").innerHTML = aktuelles_svg def download_svg(event=None): global aktuelles_svg if not aktuelles_svg: return # Über das JavaScript-Window-Objekt einen unsichtbaren Download-Link bauen js_code = f""" var blob = new Blob([{repr(aktuelles_svg)}], {{type: "image/svg+xml;charset=utf-8"}}); var url = URL.createObjectURL(blob); var a = document.createElement("a"); a.href = url; a.download = "schraegbild.svg"; document.body.appendChild(a); a.click(); document.body.removeChild(a); URL.revokeObjectURL(url); """ # Den JS-Code im Browser-Kontext ausführen window.eval(js_code) # Initialer Aufruf zeichne_koordinatensystem()