export_csv: Konfigurationsdialog fuer Export-Modus + Proxy-Sichtbarkeit
Neuer Menuepunkt Konfiguration > CSV-Export (CSV_EXPORT_KONFIG) mit DCL- Dialog: drei sich ausschliessende Export-Modi (group_vf_gf/all_elements/ separator_track, letzterer neu - nur AS/ES/Separator) ueber die zentrale Variable *csv-export-modus*, sowie zwei unabhaengige Haken fuer sichtbare Element-Proxy-Kopien (Zuordnung pruefen / Kopien behalten).
This commit is contained in:
+112
-21
@@ -50,20 +50,63 @@
|
||||
;; ueberlebt damit jeden Neustart.
|
||||
(setq *export-test-override* nil)
|
||||
|
||||
;; --- Schalter: rohe Einzelteil-Zeilen statt gruppierter Foerdereinheit/
|
||||
;; Gefaelleeinheit-Zeilen exportieren ---
|
||||
;; Default nil = gruppierter Modus (csv:unitmark-aktualisieren fasst Boegen/
|
||||
;; Streckenelemente/Umlenk-/Motorstation zu je einer Zeile pro
|
||||
;; Foerdereinheit/Gefaelleeinheit zusammen, die vier pattern_nested_*-
|
||||
;; Einzelteil-Zeilen bleiben aus dem Export ausgeschlossen). Auf T gesetzt:
|
||||
;; Verhalten wie vor der Gruppierung - jedes Einzelteil bekommt seine eigene
|
||||
;; Export-Zeile (csv:collect-export-blocks laesst die pattern_nested_*-
|
||||
;; Klauseln dann durch). Nur per Lisp-Variable/den beiden Helfern
|
||||
;; umschaltbar, kein Menuepunkt vorgesehen.
|
||||
(if (not (boundp '*csv-export-alle-elemente*)) (setq *csv-export-alle-elemente* nil))
|
||||
(defun csv:export-alle-elemente-p () *csv-export-alle-elemente*)
|
||||
(defun csv:export-alle-elemente-an () (setq *csv-export-alle-elemente* T) (princ))
|
||||
(defun csv:export-alle-elemente-aus () (setq *csv-export-alle-elemente* nil) (princ))
|
||||
;; --- Export-Modus: wie granular VF_n/GF_n-Ketten exportiert werden ---
|
||||
;; Drei sich gegenseitig ausschliessende Werte (String, ueber CSV_EXPORT_
|
||||
;; KONFIG/dcl/csv_export_konfig.dcl bedienbar, siehe c:CSV_EXPORT_KONFIG
|
||||
;; weiter unten):
|
||||
;; "group_vf_gf" - Default. csv:unitmark-aktualisieren fasst Boegen/
|
||||
;; Streckenelemente/Umlenk-/Motorstation zu je einer
|
||||
;; Zeile pro Foerdereinheit/Gefaelleeinheit zusammen,
|
||||
;; die pattern_nested_*-Einzelteil-Zeilen bleiben aus
|
||||
;; dem Export ausgeschlossen.
|
||||
;; "all_elements" - Verhalten wie vor der Gruppierung: jedes Einzelteil
|
||||
;; (Bogen/Streckenelement/Umlenk-/Motorstation)
|
||||
;; bekommt seine eigene Export-Zeile
|
||||
;; (csv:collect-export-blocks laesst die
|
||||
;; pattern_nested_*-Klauseln durch, csv:unitmark-
|
||||
;; aktualisieren legt keine neuen Marker an).
|
||||
;; "separator_track" - Klassisches Verhalten vor beiden Erweiterungen:
|
||||
;; nur AS/ES/Separator, keine Einzelteile UND keine
|
||||
;; Foerdereinheit/Gefaelleeinheit-Marker (weder
|
||||
;; csv:element-proxies-erzeugen noch csv:unitmark-
|
||||
;; aktualisieren legen dafuer etwas Neues an - siehe
|
||||
;; csv:export-vorbereiten).
|
||||
;; Ein ungueltiger Wert wird von csv:export-modus-setzen ignoriert (Modus
|
||||
;; bleibt unveraendert) statt die Zeichnung in einen unbekannten Zustand zu
|
||||
;; versetzen.
|
||||
(if (not (boundp '*csv-export-modus*)) (setq *csv-export-modus* "group_vf_gf"))
|
||||
(defun csv:export-modus () *csv-export-modus*)
|
||||
(defun csv:export-modus-setzen (modus)
|
||||
(if (member modus '("all_elements" "group_vf_gf" "separator_track"))
|
||||
(setq *csv-export-modus* modus))
|
||||
(princ)
|
||||
)
|
||||
;; Abgeleitete Boolean-Abfragen - bestehende Aufrufstellen (csv:collect-
|
||||
;; export-blocks/csv:unitmark-aktualisieren) bleiben dadurch unveraendert.
|
||||
(defun csv:export-alle-elemente-p () (= *csv-export-modus* "all_elements"))
|
||||
(defun csv:export-separator-track-p () (= *csv-export-modus* "separator_track"))
|
||||
;; Kurzformen, die die frueheren csv:export-alle-elemente-an/-aus 1:1
|
||||
;; ersetzen (z.B. fuer Testcode/Kommandozeile).
|
||||
(defun csv:export-alle-elemente-an () (csv:export-modus-setzen "all_elements"))
|
||||
(defun csv:export-alle-elemente-aus () (csv:export-modus-setzen "group_vf_gf"))
|
||||
|
||||
;; --- Zwei unabhaengige Sichtbarkeits-Haken fuer die temporaeren Element-
|
||||
;; Proxy-Kopien (siehe csv:element-proxies-loeschen/csv:unitmark-
|
||||
;; aktualisieren) - ebenfalls ueber CSV_EXPORT_KONFIG bedienbar ---
|
||||
;; *csv-export-pruef-zuordnung* - laesst die den Foerdereinheit-/
|
||||
;; Gefaelleeinheit-Markern zugeordneten Element-Kopien zusaetzlich
|
||||
;; sichtbar, damit in BricsCAD optisch nachvollziehbar ist, welche
|
||||
;; Einzelteile zu welchem ZZ_UNIT_MARKER-Rechteck zusammengefasst
|
||||
;; wurden (die Marker selbst bleiben ohnehin immer stehen, persistent
|
||||
;; wie ZZ_ASES_MARKER).
|
||||
;; *csv-export-elemente-behalten* - laesst die Element-Proxy-Kopien
|
||||
;; grundsaetzlich stehen, unabhaengig vom Gruppierungs-Debugging oben.
|
||||
;; Beide unabhaengig vom bestehenden, als TEMPORAER dokumentierten Debug-
|
||||
;; Schalter "csv_leave_proxies" (ssg_dbg.lsp) - der bleibt unveraendert und
|
||||
;; steuert weiterhin zusaetzlich (ODER-verknuepft) sowohl Separator- als
|
||||
;; auch Element-Proxies.
|
||||
(if (not (boundp '*csv-export-pruef-zuordnung*)) (setq *csv-export-pruef-zuordnung* nil))
|
||||
(if (not (boundp '*csv-export-elemente-behalten*)) (setq *csv-export-elemente-behalten* nil))
|
||||
|
||||
|
||||
;; --- Feste Datei-/Skriptnamen dieses Moduls (keine Config, direkt im Code) ---
|
||||
@@ -1251,11 +1294,22 @@
|
||||
;; Eigene, minimale Loeschfunktion statt csv:sep-proxies-loeschen wieder-
|
||||
;; zuverwenden: *cs-sep-fix-by-handle*/*cs-sep-typ-by-handle*/
|
||||
;; *csv-sepliste-id-by-handle* bleiben separator-/AS-/ES-spezifisch, diese
|
||||
;; Elemente haben keine Entsprechung davon. Nutzt denselben Debug-Schalter
|
||||
;; "csv_leave_proxies" wie Separator, fuer konsistentes Debugging.
|
||||
;; Elemente haben keine Entsprechung davon.
|
||||
;;
|
||||
;; Drei unabhaengige Gruende, die Kopien trotzdem stehen zu lassen (ODER-
|
||||
;; verknuepft): der dialoggesteuerte Haken "Element-Kopien behalten"
|
||||
;; (*csv-export-elemente-behalten*), der Haken "Zuordnung pruefen"
|
||||
;; (*csv-export-pruef-zuordnung* - zeigt zusammen mit den stehenbleibenden
|
||||
;; ZZ_UNIT_MARKER-Rechtecken, welche Kopie zu welcher Einheit gehoert), und
|
||||
;; der bestehende, als TEMPORAER dokumentierte Debug-Schalter
|
||||
;; "csv_leave_proxies" (ssg_dbg.lsp) - dieser bleibt unveraendert und
|
||||
;; steuert weiterhin zusaetzlich auch die Separator-Proxies
|
||||
;; (csv:sep-proxies-loeschen).
|
||||
(defun csv:element-proxies-loeschen (proxy-liste / behalten)
|
||||
(setq behalten (and (car (atoms-family 1 '("DBG-SCHALTER-P")))
|
||||
(dbg-schalter-p "csv_leave_proxies")))
|
||||
(setq behalten (or *csv-export-elemente-behalten*
|
||||
*csv-export-pruef-zuordnung*
|
||||
(and (car (atoms-family 1 '("DBG-SCHALTER-P")))
|
||||
(dbg-schalter-p "csv_leave_proxies"))))
|
||||
(if behalten
|
||||
(princ (strcat "\n[EXPORT] csv_leave_proxies=1: "
|
||||
(itoa (length proxy-liste))
|
||||
@@ -2352,7 +2406,11 @@
|
||||
ergebnis neu uebernommen verwaist)
|
||||
(setq neu 0 uebernommen 0 verwaist 0)
|
||||
(setq bestand (csv:unitmark-sammeln))
|
||||
(if (not (csv:export-alle-elemente-p))
|
||||
;; Neue Marker nur im GENAU gruppierten Modus anlegen - sowohl
|
||||
;; "all_elements" als auch "separator_track" wollen keine ZZ_UNIT_MARKER,
|
||||
;; der Aufraeum-Pass unten (verwaiste Marker loeschen) laeuft in JEDEM
|
||||
;; Modus unbedingt weiter.
|
||||
(if (= *csv-export-modus* "group_vf_gf")
|
||||
(progn
|
||||
(setq blockname (csv:unitmark-blockdef-sicherstellen))
|
||||
(if blockname
|
||||
@@ -2659,8 +2717,10 @@
|
||||
;; temporaere Kopien ersetzen - siehe csv:element-proxies-erzeugen. MUSS wie
|
||||
;; sep-proxies VOR ssg-id-check-all stehen, damit die frischen Kopien in
|
||||
;; dessen Lauf mit nummeriert werden (siehe ssg-id-collect-blocks,
|
||||
;; ssg_id.lsp).
|
||||
(setq element-proxies (csv:element-proxies-erzeugen))
|
||||
;; ssg_id.lsp). Im Modus "separator_track" werden gar keine Element-Kopien
|
||||
;; erzeugt - dieser Modus kennt nur AS/ES/Separator.
|
||||
(setq element-proxies
|
||||
(if (csv:export-separator-track-p) nil (csv:element-proxies-erzeugen)))
|
||||
;; Foerdereinheit-/Gefaelleeinheit-Marker (ZZ_UNIT_MARKER) aus den drei
|
||||
;; obigen Proxy-/Marker-Listen bauen - MUSS nach ihnen (braucht ihre
|
||||
;; Weltpositionen) und VOR ssg-id-check-all stehen (frische Marker werden
|
||||
@@ -2892,6 +2952,37 @@
|
||||
)
|
||||
|
||||
|
||||
;; --- CSV_EXPORT_KONFIG: Dialog fuer Export-Modus + Proxy-Sichtbarkeit ---
|
||||
(defun csv:export-konfig-init ( / idx)
|
||||
(setq idx
|
||||
(cond
|
||||
((= *csv-export-modus* "all_elements") "1")
|
||||
((= *csv-export-modus* "separator_track") "2")
|
||||
(t "0")))
|
||||
(set_tile "modus" idx)
|
||||
(set_tile "pruef_zuordnung" (if *csv-export-pruef-zuordnung* "1" "0"))
|
||||
(set_tile "elemente_behalten" (if *csv-export-elemente-behalten* "1" "0"))
|
||||
)
|
||||
|
||||
(defun csv:export-konfig-accept ( / idx)
|
||||
(setq idx (get_tile "modus"))
|
||||
(csv:export-modus-setzen
|
||||
(cond ((= idx "1") "all_elements") ((= idx "2") "separator_track") (t "group_vf_gf")))
|
||||
(setq *csv-export-pruef-zuordnung* (= (get_tile "pruef_zuordnung") "1"))
|
||||
(setq *csv-export-elemente-behalten* (= (get_tile "elemente_behalten") "1"))
|
||||
)
|
||||
|
||||
(defun c:CSV_EXPORT_KONFIG ()
|
||||
(ssg-dialog-run
|
||||
(strcat (getenv "DXFM_DCL") "/csv_export_konfig.dcl")
|
||||
"csv_export_konfig"
|
||||
'csv:export-konfig-init
|
||||
'csv:export-konfig-accept
|
||||
)
|
||||
(princ)
|
||||
)
|
||||
|
||||
|
||||
;; ============================================================
|
||||
;; OMNIFLO HOEHE/DREHUNG AKTUALISIEREN
|
||||
;; ============================================================
|
||||
|
||||
Reference in New Issue
Block a user