feat: Omniflo-Fahrstrecke (OMNI_FAHRSTRECKE) + Geruest-Dialoge ueberarbeitet
Fahrstrecke: - Neuer Befehl OMNI_FAHRSTRECKE (+ _BESCHRIFTEN) im Omniflo-Menue, Daten aus data/json/omniflo_fahrstrecke.json, Vorlage dcl/fahrstrecke.dcl - Nutzt die Linien-Logik des Geruest-Traegers (geruest-linien-starten, Dialog/Einfuegen/Beschriftung je Baugruppe parametriert) - Muffen-Dummy wie beim Traeger, farbig nur wo in der JSON gesetzt - Stueckliste: eigene Klasse "Omniflo Fahrstrecke" (GR_Fahrstrecke_*) Geruest-Dialoge: - DCL als statische Vorlagen mit //@NAME@-Platzhaltern (ssg-dcl-vorlage-fuellen in ssg_core), dcl/geruest.dcl neu - Ein Dialog je Bereich (keine Bereichsumschaltung mehr) - Varianten als Radiobuttons mit Artikelnummern im Label, "disabled": true graut Varianten aus - Eine Befestigungsspalte (Gesamtanzahl) + Zeile "Sonstiges", Art.-Nr. unter jedem Anbauteil - Winkel Platte (0/90): Anbauteile gedreht eingefuegt - Kennzeichnung geaenderter Konfiguration, Ueberspeichern per Enter - Traeger: Querstreben nur bei "mit_querstrebe": true Konfigurationen im alten Format (oben/unten) werden beim Laden uebernommen. Unit-Tests ergaenzt (599 gruen).
This commit is contained in:
+43
-4
@@ -1643,10 +1643,9 @@
|
||||
;; Schreibt eine Liste von Textzeilen als temporaere DCL-Datei und liefert
|
||||
;; deren Pfad zurueck (oder nil bei Fehler, z.B. wenn open scheitert). Der
|
||||
;; Aufrufer ist fuer load_dialog/unload_dialog UND das Loeschen der Datei
|
||||
;; (vl-file-delete) danach selbst verantwortlich - analog zum bestehenden
|
||||
;; Muster in GeruestInsert.lsp (geruest-dcl-schreiben), hier nur als
|
||||
;; generischer Baustein fuer WEITERE Aufrufer (GeruestInsert.lsp selbst
|
||||
;; bleibt unveraendert, um dessen Code nicht anzufassen).
|
||||
;; (vl-file-delete) danach selbst verantwortlich. Fuer Dialoge mit fester
|
||||
;; Grundstruktur und nur einzelnen datenabhaengigen Bloecken siehe
|
||||
;; ssg-dcl-vorlage-fuellen.
|
||||
(defun ssg-dcl-temp-schreiben (praefix zeilen / pfad f)
|
||||
(setq pfad (vl-filename-mktemp praefix nil ".dcl"))
|
||||
(if (setq f (open pfad "w"))
|
||||
@@ -1659,6 +1658,46 @@
|
||||
)
|
||||
)
|
||||
|
||||
;; DCL-Vorlagen mit Platzhaltern: DCL kann Tiles weder zur Laufzeit erzeugen
|
||||
;; noch ausblenden, und Labels von radio_button/toggle lassen sich per
|
||||
;; set_tile nicht aendern. Datenabhaengige Teile (z.B. ein Radiobutton je
|
||||
;; Variante) werden darum in eine statische .dcl-Vorlage eingesetzt: jede
|
||||
;; Zeile, die getrimmt genau "//@NAME@" lautet, wird durch die Zeilen aus
|
||||
;; ersetzungen (("NAME" . (zeile ...)) ...) ersetzt. Eine leere Liste
|
||||
;; entfernt die Markerzeile; ein unbekannter Marker bleibt als DCL-Kommentar
|
||||
;; stehen (harmlos). Das Layout bleibt so eine normale, lesbare .dcl-Datei.
|
||||
(defun ssg-dcl-zeilen-ersetzen (zeilen ersetzungen / erg t1 name e)
|
||||
(setq erg nil)
|
||||
(foreach z zeilen
|
||||
(setq t1 (vl-string-trim " \t" z))
|
||||
(setq name (if (and (> (strlen t1) 4)
|
||||
(= (substr t1 1 3) "//@")
|
||||
(= (substr t1 (strlen t1) 1) "@"))
|
||||
(substr t1 4 (- (strlen t1) 4))))
|
||||
(if (and name (setq e (assoc name ersetzungen)))
|
||||
(setq erg (append erg (cdr e)))
|
||||
(setq erg (append erg (list z)))
|
||||
)
|
||||
)
|
||||
erg
|
||||
)
|
||||
|
||||
;; Vorlage lesen, Platzhalter ersetzen (ssg-dcl-zeilen-ersetzen) und als
|
||||
;; temporaere DCL-Datei schreiben. Rueckgabe: Pfad oder nil (Vorlage fehlt /
|
||||
;; nicht lesbar / nicht schreibbar). Laden und Loeschen wie bei
|
||||
;; ssg-dcl-temp-schreiben durch den Aufrufer.
|
||||
(defun ssg-dcl-vorlage-fuellen (vorlage-pfad praefix ersetzungen / f z zeilen)
|
||||
(if (and vorlage-pfad (findfile vorlage-pfad) (setq f (open vorlage-pfad "r")))
|
||||
(progn
|
||||
(setq zeilen nil)
|
||||
(while (setq z (read-line f)) (setq zeilen (cons z zeilen)))
|
||||
(close f)
|
||||
(ssg-dcl-temp-schreiben praefix
|
||||
(ssg-dcl-zeilen-ersetzen (reverse zeilen) ersetzungen))
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
;; ------------------------------------------------------------
|
||||
;; REKURSIVER JSON-PARSER
|
||||
|
||||
Reference in New Issue
Block a user