feat: GR_-Geruest-Baugruppen in EXPORTCSV/EXPORTSIVAS aufnehmen
GR_-Bloecke werden jetzt wie BTMT eigenstaendig gesammelt (LISP: neues pattern_geruest in cfg/export.cfg, csv:collect-export-blocks, ssg-id-collect-blocks + ID-ATTDEF in *geruest-attrib-defs*) und in beiden Python-Exporten als eigene TeileArt-Zeile ausgegeben: ARTINR/BEZEICHNUNG/ TEILEART/LAENGE in festen Spalten, restliche Attribute (FARBE/LAYER) im Merkmale-/details-JSON. Dabei zwei Bugs behoben, die beim ersten echten GR_-Export sichtbar wurden: - csv:json-escape nutzte vl-string-subst (ersetzt nur das erste Vorkommen) statt des global ersetzenden ssg-str-replace-all - bei Attributwerten mit mehreren Anfuehrungszeichen blieb ein Zeichen unescaped und brach die JSON-Struktur beim Python-Parsen. - Gradzeichen (°) in data/json/geruest.json durch "Grad" ersetzt, um das Encoding-Risiko (cp1252 vs. UTF-8 beim LISP-Export) zu vermeiden.
This commit is contained in:
+13
-2
@@ -198,12 +198,18 @@
|
||||
|
||||
;; --- String fuer JSON escapen (Anfuehrungszeichen/Backslash) ---
|
||||
;; Konvertiert nicht-String-Werte (z.B. T, nil, Zahlen) defensiv in String.
|
||||
;; ssg-str-replace-all (ssg_lang.lsp) statt vl-string-subst: vl-string-subst
|
||||
;; ersetzt nur das ERSTE Vorkommen, nicht alle - bei einem Attributwert mit
|
||||
;; MEHREREN Anfuehrungszeichen (z.B. BEZEICHNUNG einer Geruest-Baugruppe mit
|
||||
;; zwei Zoll-Angaben wie 'F. 2" UND 1" ROHR') blieb das zweite Vorkommen
|
||||
;; unescaped stehen und brach die JSON-Struktur beim Python-Parsen (realer
|
||||
;; Bug, behoben) - export_raw.json/EXPORTCSV.
|
||||
(defun csv:json-escape (s)
|
||||
(if (not (= (type s) 'STR))
|
||||
(setq s (if s (vl-princ-to-string s) ""))
|
||||
)
|
||||
(setq s (vl-string-subst "\\\\" "\\" s))
|
||||
(vl-string-subst "\\\"" "\"" s)
|
||||
(setq s (ssg-str-replace-all "\\\\" "\\" s))
|
||||
(ssg-str-replace-all "\\\"" "\"" s)
|
||||
)
|
||||
|
||||
|
||||
@@ -1082,6 +1088,10 @@
|
||||
;; ils-insert-station in SSG_LIB_Commands.lsp). Anders als Separator/
|
||||
;; Scanner werden sie von KEINEM anderen Element mitgezaehlt - export_csv.py
|
||||
;; UND export_sivas.py fuehren sie beide als eigene TeileArt-Zeilen.
|
||||
;; GR_* = Geruest-Baugruppen (siehe pattern_geruest in cfg/export.cfg,
|
||||
;; GeruestInsert.lsp). Wie BTMT eigenstaendig und von keinem anderen
|
||||
;; Element mitgezaehlt - export_csv.py UND export_sivas.py fuehren sie
|
||||
;; beide als eigene TeileArt-Zeilen.
|
||||
;; Gibt Auswahlsatz zurueck oder nil.
|
||||
(defun csv:collect-export-blocks ( / ss-all ss-out i ename ed bname)
|
||||
(setq ss-all (ssget "X" (list (cons 0 "INSERT"))))
|
||||
@@ -1101,6 +1111,7 @@
|
||||
(wcmatch bname (export:pattern "pattern_scanner" "Scanner*"))
|
||||
(wcmatch bname (export:pattern "pattern_btmt_beladung" "BTMT-Beladung*"))
|
||||
(wcmatch bname (export:pattern "pattern_btmt_entladung" "SC_Entladung*"))
|
||||
(wcmatch bname (export:pattern "pattern_geruest" "GR_*"))
|
||||
;; Rein numerische Namen = Omniflo SivasNr (Boegen/Weichen)
|
||||
;; Rein LISP-intern (Python klassifiziert Omniflo stattdessen
|
||||
;; ueber exakten Katalog-Match), daher fest im Code statt in
|
||||
|
||||
Reference in New Issue
Block a user