[FIX] Export: Schnittpunkte zwischen Kreiseln werden erkannt und Weichen entsprechend gezählt und als Teil mit Merkmalen im Export befüllt - nur Kreisel mit gleicher Höhe können einen Schnittpunkt für Weiche bilden - Funktion der Weichenzählung manuell aufrufbar; [FIX] Eckrad nun korrekt angelegt und exportiert
This commit is contained in:
@@ -149,6 +149,7 @@
|
||||
(setq *export-filenames*
|
||||
(list
|
||||
(cons "raw_json_datei" "export_raw.json")
|
||||
(cons "kreisel_weichen_datei" "kreisel_weichen.json")
|
||||
(cons "sivas_script" "export_sivas.py")
|
||||
(cons "sivas_csv" "sivas.csv")
|
||||
(cons "csv_script" "export_csv.py")
|
||||
@@ -2745,6 +2746,74 @@
|
||||
)
|
||||
)
|
||||
|
||||
;; --- Kreisel-Beruehrpunkte (Weichen) fuer den Python-Export -------------
|
||||
;; Schreibt <out-dir>/kreisel_weichen.json aus kreisel-bp-ermitteln
|
||||
;; (KreiselInsert.lsp) - derselbe Kern wie der Befehl KREISEL_WEICHEN, nur
|
||||
;; ohne Marker. Gelesen von export_neighbors.load_lisp_touch_switches
|
||||
;; (export_csv.py) und export_sivas.py (Merkmal 4403). Partner werden ueber
|
||||
;; ihr ID-Attribut (= teileid im Python-Export) UND den Handle genannt.
|
||||
;; Eine alte Datei wird vorher geloescht, damit Python nie veraltete Punkte
|
||||
;; liest, falls KreiselInsert nicht geladen ist (dann rechnet Python selbst).
|
||||
;; Rueckgabe: Pfad der geschriebenen Datei oder nil.
|
||||
(defun csv:kreisel-weichen-json-eintrag (tr / ea eb)
|
||||
(setq ea (cdr (assoc "a" tr))
|
||||
eb (cdr (assoc "b" tr)))
|
||||
(strcat
|
||||
" {\"a\":\"" (csv:json-escape (cdr (assoc "id" ea))) "\""
|
||||
",\"b\":\"" (csv:json-escape (cdr (assoc "id" eb))) "\""
|
||||
",\"a_handle\":\"" (csv:json-escape (cdr (assoc "handle" ea))) "\""
|
||||
",\"b_handle\":\"" (csv:json-escape (cdr (assoc "handle" eb))) "\""
|
||||
",\"a_typ\":\"" (cdr (assoc "typ" ea)) "\""
|
||||
",\"b_typ\":\"" (cdr (assoc "typ" eb)) "\""
|
||||
",\"x\":" (rtos (car (cdr (assoc "p" tr))) 2 4)
|
||||
",\"y\":" (rtos (cadr (cdr (assoc "p" tr))) 2 4)
|
||||
",\"z\":" (rtos (cdr (assoc "z" tr)) 2 4)
|
||||
",\"art\":\"" (csv:json-escape (cdr (assoc "art" tr))) "\""
|
||||
",\"detail\":\"" (csv:json-escape (cdr (assoc "detail" tr))) "\""
|
||||
",\"achse_von\":\"" (csv:json-escape (cdr (assoc "achse_von" tr))) "\""
|
||||
",\"achse_rot_grad\":" (rtos (cdr (assoc "achse_rot" tr)) 2 4)
|
||||
"}")
|
||||
)
|
||||
|
||||
(defun csv:kreisel-weichen-json-liste (fh treffer / first)
|
||||
(setq first T)
|
||||
(foreach tr treffer
|
||||
(if (not first) (write-line "," fh))
|
||||
(princ (csv:kreisel-weichen-json-eintrag tr) fh)
|
||||
(setq first nil))
|
||||
(if treffer (write-line "" fh))
|
||||
)
|
||||
|
||||
(defun csv:kreisel-weichen-schreiben (label out-dir / pfad erg fh)
|
||||
(setq pfad (strcat out-dir "/" (export:filename "kreisel_weichen_datei")))
|
||||
(if (findfile pfad) (vl-file-delete pfad))
|
||||
(if (car (atoms-family 1 '("KREISEL-BP-ERMITTELN")))
|
||||
(progn
|
||||
(setq erg (kreisel-bp-ermitteln))
|
||||
(if (setq fh (open pfad "w"))
|
||||
(progn
|
||||
(write-line "{" fh)
|
||||
(write-line (strcat " \"toleranz_mm\": " (rtos (kreisel-bp-toleranz) 2 4) ",") fh)
|
||||
(write-line " \"beruehrungen\": [" fh)
|
||||
(csv:kreisel-weichen-json-liste fh (car erg))
|
||||
(write-line " ]," fh)
|
||||
(write-line " \"kollisionen\": [" fh)
|
||||
(csv:kreisel-weichen-json-liste fh (cadr erg))
|
||||
(write-line " ]" fh)
|
||||
(write-line "}" fh)
|
||||
(close fh)
|
||||
(princ (ssg-textf "exp-kreisel-weichen"
|
||||
(list label (itoa (length (car erg))) (itoa (length (cadr erg))) pfad)))
|
||||
(if (cadr erg)
|
||||
(princ (ssg-textf "exp-kreisel-kollision" (list label (itoa (length (cadr erg)))))))
|
||||
pfad
|
||||
)
|
||||
(progn (princ (ssg-textf "exp-file-open-error" (list label pfad))) nil)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; py-name = Python-Skript-Name (z.B. "export_csv.py")
|
||||
;; csv-name = Ergebnis-CSV-Name (z.B. "export.csv")
|
||||
;; include-bbox = T -> Bounding-Box je Block ermitteln und mit exportieren
|
||||
@@ -2819,6 +2888,10 @@
|
||||
(list (itoa *csv-bbox-fail-count*)
|
||||
(cond (*csv-bbox-fail-first*) ("?"))))))
|
||||
|
||||
;; Kreisel-Beruehrpunkte (Weichen) neben die Raw-Datei schreiben -
|
||||
;; die Python-Skripte uebernehmen sie statt selbst zu rechnen.
|
||||
(csv:kreisel-weichen-schreiben label out-dir)
|
||||
|
||||
;; Python-Export-Skript aufrufen (ausgelagert, siehe oben).
|
||||
(csv:python-aufrufen label out-dir out-pfad py-name csv-name)
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user