Sensor-Zuordnung: Separator/Scanner je Kreisel/Strecke zaehlen vor Export
count_sep_scan.lsp neu als wiederverwendbare Engine (cs-zuordnung-lauf), die automatisch vor jedem CSV-/Sivas-Export laeuft (export.lsp, csv:run-export). Zaehlt Separator_SP/Scanner je Carrier (Kreisel/Eckrad, VF_*, GF_*) ueber die gemeinsamen cfg/export.cfg-Muster und schreibt ANZAHL_SEPARATOR/ANZAHL_SCANNER, so dass die Summe zur Szene passt. Scanner ausserhalb jeder Carrier-Boundingbox ohne ZUORDNUNG werden per Abstand dem naechsten Kreisel/Strecke zugeschlagen (ZUORDNUNG = Carrier-ID). Ist der Abstand zum zweitnaechsten Kandidaten fast gleich (<= strittig_diff_mm, neu in cfg/export.cfg [Sensorzuordnung]), gilt die Zuordnung als strittig: Konsolenausgabe der ergaenzten Scanner + JSON-"warnung"-Feld mit den IDs der strittigen Kandidaten (csv:block-to-json), das export_csv.py in der Spalte "Warnungen" ausgibt. Menue: ZAEHLE_SEP_SCAN-Vorlauf vor EXPORTSIVAS entfernt (laeuft jetzt automatisch im Export); interaktiver Befehl bleibt erhalten. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+28
-1
@@ -463,7 +463,7 @@
|
||||
;; csv:get-k-kos-strings) werden immer geschrieben, unabhaengig von
|
||||
;; include-bbox -- Kodierung ueber csv:kos-encode (siehe dort).
|
||||
(defun csv:block-to-json (ename include-bbox / ed blk-name layer pt rotation handle attribs bbox bbox-json
|
||||
insert-quat insert-kos k-list)
|
||||
insert-quat insert-kos k-list warnung-json warnung-eintrag)
|
||||
(setq ed (entget ename))
|
||||
(setq blk-name (cdr (assoc 2 ed)))
|
||||
(setq layer (cdr (assoc 8 ed)))
|
||||
@@ -506,6 +506,17 @@
|
||||
)
|
||||
)
|
||||
)
|
||||
;; Warnung fuer strittige Scanner-Zuordnungen anhaengen (siehe
|
||||
;; cs-zuordnung-lauf in count_sep_scan.lsp, das *cs-scanner-warnung-
|
||||
;; by-handle* vor csv:collect-export-blocks befuellt). Referenziert
|
||||
;; die Variable direkt statt ueber atoms-family: ein in AutoLISP noch
|
||||
;; nie gesetztes globales Symbol wertet beim Lesen zu nil aus (kein
|
||||
;; Fehler), genau wie *export-test-override* in diesem Modul.
|
||||
(setq warnung-json "")
|
||||
(setq warnung-eintrag (assoc handle *cs-scanner-warnung-by-handle*))
|
||||
(if warnung-eintrag
|
||||
(setq warnung-json (strcat ",\"warnung\":\"" (csv:json-escape (cdr warnung-eintrag)) "\""))
|
||||
)
|
||||
(strcat
|
||||
" {\"block_name\":\"" (csv:json-escape blk-name) "\""
|
||||
",\"layer\":\"" (csv:json-escape layer) "\""
|
||||
@@ -521,6 +532,7 @@
|
||||
",\"k3\":\"" (csv:k-kos k-list "K3") "\""
|
||||
",\"k4\":\"" (csv:k-kos k-list "K4") "\""
|
||||
bbox-json
|
||||
warnung-json
|
||||
"}"
|
||||
)
|
||||
)
|
||||
@@ -615,6 +627,21 @@
|
||||
;; Vor dem Export HOEHE/DREHUNG aller Omniflo-Elemente aktualisieren
|
||||
(princ (ssg-textf "exp-update-hoehe-drehung" (list label)))
|
||||
(omni:update-all-attribs)
|
||||
;; Vor dem Export: Separator-/Scanner-Zuordnung pruefen und
|
||||
;; ANZAHL_SEPARATOR/ANZAHL_SCANNER an Kreisel/Streckengruppe/
|
||||
;; Gefaellestrecke aktualisieren (siehe count_sep_scan.lsp,
|
||||
;; cs-zuordnung-lauf). Scanner ausserhalb jeder Carrier-Boundingbox
|
||||
;; werden dabei per Abstand zugeordnet (ZUORDNUNG-Attribut = Carrier-
|
||||
;; ID) und - bei mehrdeutigem Abstand - als "strittig" markiert;
|
||||
;; *cs-scanner-warnung-by-handle* wird von csv:block-to-json unten
|
||||
;; ausgelesen und haengt den Warnungstext an den betroffenen Scanner-
|
||||
;; Block im JSON an. verbose=nil haelt die Export-Konsole kompakt
|
||||
;; (die ausfuehrliche Detailzeile je Carrier gibt es nur beim
|
||||
;; interaktiven Befehl ZAEHLE_SEP_SCAN).
|
||||
(ssg-ensure "count_sep_scan")
|
||||
(if (atoms-family 1 '("cs-zuordnung-lauf"))
|
||||
(cs-zuordnung-lauf label nil)
|
||||
)
|
||||
(princ (ssg-textf "exp-collect-blocks" (list label)))
|
||||
|
||||
(setq ss (csv:collect-export-blocks))
|
||||
|
||||
Reference in New Issue
Block a user