export: ein Schalter fuer Hilfskopien, Test-Menue ueber Funktionsaufruf

- csv_leave_proxies ist der einzige Schalter, der Export-Hilfskopien
  (Separator-/Element-Kopien, Einheiten-Proxies) stehen laesst; Standard
  jetzt 0 = aufraeumen. Die zwei gleichwirkenden Dialog-Haken
  (*csv-export-pruef-zuordnung*/*csv-export-elemente-behalten*) entfallen,
  CSV_EXPORT_KONFIG schaltet mit einem Haken denselben Debug-Schalter.
- Unit-Test fuer csv:hilfskopien-behalten-p/-setzen
- Test-Menue: (load ...) (c:TEST_...) statt Befehlsname direkt nach dem
  load - BricsCAD registriert den per load definierten Befehl erst nach
  Rueckkehr zur Kommandozeile ("Befehl nicht erkannt" bei TEST_EXPORT_ALL)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-09-25 22:17:30 +02:00
parent 394d476d56
commit 5a13595289
6 changed files with 79 additions and 101 deletions
+26 -57
View File
@@ -90,23 +90,19 @@
(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))
;; --- Hilfskopien nach dem Export stehen lassen: EIN Schalter ---
;; Standard: der Export raeumt alle Hilfskopien wieder ab (Separator-/
;; Element-Kopien, Einheiten-Proxies, siehe csv:hilfskopien-loeschen). Nur der
;; Debug-Schalter "csv_leave_proxies" (ssg_dbg.lsp, Standard 0) laesst sie
;; stehen, damit man in BricsCAD sieht, was exportiert wurde. Bedienbar per
;; (dbg-schalter-on/-off "csv_leave_proxies") oder im Dialog CSV_EXPORT_KONFIG
;; - beide Wege schalten denselben Zustand.
(defun csv:hilfskopien-behalten-p ()
(and (car (atoms-family 1 '("DBG-SCHALTER-P")))
(dbg-schalter-p "csv_leave_proxies")))
(defun csv:hilfskopien-behalten-setzen (an)
(if (car (atoms-family 1 '("DBG-SCHALTER-SET")))
(dbg-schalter-set "csv_leave_proxies" (if an 1 0))))
;; --- Feste Datei-/Skriptnamen dieses Moduls (keine Config, direkt im Code) ---
@@ -1405,40 +1401,17 @@
(reverse proxy-liste)
)
;; --- Temporaere Element-Kopien nach dem Export wieder entfernen ---
;; 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.
;;
;; 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 art-key)
(csv:hilfskopien-loeschen proxy-liste art-key
(or *csv-export-elemente-behalten* *csv-export-pruef-zuordnung*))
)
;; --- Gemeinsame Loeschung aller Export-Hilfskopien ---
;; --- Export-Hilfskopien nach dem Export wieder entfernen ---
;; proxy-liste = Records, deren car die Hilfskopie ist.
;; art-key = Sprachschluessel der Objektart fuer die Meldung
;; ("exp-art-separator"/"exp-art-element"/"exp-art-einheit").
;; zusaetzlich = weiterer Behalten-Grund (Konfig-Haken) oder nil.
;; Behalten, wenn der Debug-Schalter "csv_leave_proxies" gesetzt ist oder
;; zusaetzlich zutrifft - dann eine Meldung je Art (nur wenn es welche gibt).
(defun csv:hilfskopien-loeschen (proxy-liste art-key zusaetzlich / behalten)
(setq behalten (or zusaetzlich
(and (car (atoms-family 1 '("DBG-SCHALTER-P")))
(dbg-schalter-p "csv_leave_proxies"))))
;; Standard: loeschen. Bei gesetztem csv_leave_proxies (siehe
;; csv:hilfskopien-behalten-p) bleiben sie stehen, mit einer Meldung je Art
;; (nur wenn es welche gibt).
(defun csv:hilfskopien-loeschen (proxy-liste art-key)
(cond
((null proxy-liste))
(behalten
((csv:hilfskopien-behalten-p)
(princ (ssg-textf "exp-hilfskopien-behalten"
(list (itoa (length proxy-liste)) (ssg-text art-key)))))
(t (foreach rec proxy-liste (entdel (car rec))))
@@ -2194,7 +2167,7 @@
;; *csv-sepliste-id-by-handle* werden trotzdem zurueckgesetzt - sie gelten nur
;; fuer den gerade gelaufenen Export.
(defun csv:sep-proxies-loeschen (proxy-liste)
(csv:hilfskopien-loeschen proxy-liste "exp-art-separator" nil)
(csv:hilfskopien-loeschen proxy-liste "exp-art-separator")
(setq *cs-sep-fix-by-handle* nil)
(setq *cs-sep-typ-by-handle* nil)
(setq *csv-sepliste-id-by-handle* nil)
@@ -2209,8 +2182,8 @@
;; Separator-/Element-Kopien: es entsteht bei jedem Export neu, bekommt in
;; ssg-id-check-all eine ID, liefert die Export-Zeile und wird am Ende von
;; csv:run-export wieder geloescht - ausser der Debug-Schalter
;; "csv_leave_proxies" (bzw. einer der Konfig-Haken, siehe
;; csv:element-proxies-loeschen) laesst es zur Ansicht stehen.
;; "csv_leave_proxies" (siehe csv:hilfskopien-loeschen) laesst es zur
;; Ansicht stehen.
;; Nur im Modus group_vf_gf; in den anderen Modi entsteht keins.
(defun csv:unitmark-blockname () "ZZ_UNIT_MARKER")
@@ -2811,10 +2784,8 @@
;; Sammel-Funktionen) erfuellt. Die AS-/ES-Marker (ZZ_ASES_MARKER) bleiben
;; bewusst stehen (siehe csv:export-vorbereiten).
(csv:sep-proxies-loeschen sep-proxies)
(csv:element-proxies-loeschen element-proxies "exp-art-element")
;; Einheiten-Proxies: dieselbe Behalten-Regel wie die Element-Kopien
;; (Debug-Schalter csv_leave_proxies / Konfig-Haken).
(csv:element-proxies-loeschen unitmarks "exp-art-einheit")
(csv:hilfskopien-loeschen element-proxies "exp-art-element")
(csv:hilfskopien-loeschen unitmarks "exp-art-einheit")
(princ)
)
@@ -2859,16 +2830,14 @@
(vl-position *csv-export-modus* (mapcar 'car *csv-export-konfig-modi*)))
(if eintrag (setq idx eintrag))
(set_tile "modus" (itoa idx))
(set_tile "pruef_zuordnung" (if *csv-export-pruef-zuordnung* "1" "0"))
(set_tile "elemente_behalten" (if *csv-export-elemente-behalten* "1" "0"))
(set_tile "hilfskopien_behalten" (if (csv:hilfskopien-behalten-p) "1" "0"))
)
(defun csv:export-konfig-accept ( / idx modus)
(setq idx (atoi (get_tile "modus")))
(setq modus (car (nth idx *csv-export-konfig-modi*)))
(if modus (csv:export-modus-setzen modus))
(setq *csv-export-pruef-zuordnung* (= (get_tile "pruef_zuordnung") "1"))
(setq *csv-export-elemente-behalten* (= (get_tile "elemente_behalten") "1"))
(csv:hilfskopien-behalten-setzen (= (get_tile "hilfskopien_behalten") "1"))
)
(defun c:CSV_EXPORT_KONFIG ()
+16 -12
View File
@@ -68,24 +68,28 @@
;; Beide Schalter hier stehen NUR fuer diese Fehlersuche auf 1 und werden
;; danach wieder entfernt (mitsamt der zugehoerigen Instrumentierung in
;; ssg_ks_insert.lsp/Gefaellestrecke.lsp/vf_core.lsp bzw. dem Guard in
;; csv:sep-proxies-loeschen, export.lsp). Sie sind bewusst vorregistriert,
;; damit nach einem BricsCAD-Neustart ohne weiteres Zutun protokolliert wird.
;; csv:hilfskopien-loeschen, export.lsp). vf-sepliste ist bewusst mit 1
;; vorregistriert, damit nach einem BricsCAD-Neustart ohne weiteres Zutun
;; protokolliert wird; csv_leave_proxies mit 0 - Standard ist, dass der Export
;; seine Hilfskopien wieder abraeumt.
;;
;; vf-sepliste - protokolliert den kompletten Weg der
;; Sepliste-Koordinaten beim Bau einer VF-/GF-Kette
;; nach DXFM_LOG/vf_sepliste.dbg (eigene Datei, nicht
;; ueber *dbg-path*).
;; csv_leave_proxies - laesst die temporaeren Separator_SP-Kopien, die der
;; Export aus den Wrappern auspackt, nach dem Export in
;; der Zeichnung stehen, damit ihre tatsaechliche Lage
;; in BricsCAD gegen die sepliste-Koordinaten geprueft
;; werden kann. ACHTUNG: die Kopien werden bei JEDEM
;; Export neu erzeugt und sammeln sich an - Zeichnung
;; danach nicht speichern.
;; csv_leave_proxies - laesst ALLE Hilfskopien des Exports (Separator-/
;; Element-Kopien, Foerder-/Gefaelleeinheit-Proxies)
;; nach dem Export in der Zeichnung stehen, damit man
;; in BricsCAD sieht, was exportiert wurde. Auch ueber
;; den Dialog CSV_EXPORT_KONFIG schaltbar. Standard 0.
;; Der naechste Export raeumt stehengebliebene
;; Einheiten-Proxies selbst ab; Separator-/Element-
;; Kopien sammeln sich dagegen an - Zeichnung mit
;; eingeschaltetem Schalter nicht speichern.
;; ------------------------------------------------------------
(foreach nm '("vf-sepliste" "csv_leave_proxies")
(if (not (assoc nm *dbg-schalter*))
(setq *dbg-schalter* (cons (cons nm 1) *dbg-schalter*))))
(foreach nm '(("vf-sepliste" . 1) ("csv_leave_proxies" . 0))
(if (not (assoc (car nm) *dbg-schalter*))
(setq *dbg-schalter* (cons nm *dbg-schalter*))))
(defun dbg-schalter-set (name wert)
(setq *dbg-schalter*