CSV-Export: Bounding-Box (Position/Boundingbox) und Planquadrat-Spalte ergaenzt
Nur EXPORTCSV betroffen, EXPORTSIVAS bleibt unveraendert: - Position/Boundingbox: Bounding-Box je Block per vla-getboundingbox (Lisp/export.lsp, csv:get-bbox), Mittelpunkt und Ausdehnung x/y/z. - Planquadrat: aus x/y-Koordinate berechnet nach cfg/export.cfg [Planquadrate] (Schrittweite, numerisch/alphabetisch je Achse, alphabetische Zaehlung mit Excel-Spalten-Umlauf Z->AA), siehe lib/export_planquadrat.py. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
a0fd5d83bd
commit
193b0dea04
7 files changed
+367
-127
No files matched your search
+76
-5
@@ -11,6 +11,7 @@
|
|||||||
;; Datei-/Skriptnamen sind fest im Code hinterlegt (*export-filenames*).
|
;; Datei-/Skriptnamen sind fest im Code hinterlegt (*export-filenames*).
|
||||||
;; ============================================================
|
;; ============================================================
|
||||||
|
|
||||||
|
(vl-load-com)
|
||||||
|
|
||||||
;; --- Export-Konfiguration aus cfg/export.cfg laden ---
|
;; --- Export-Konfiguration aus cfg/export.cfg laden ---
|
||||||
;; Nutzt den zentralen INI-Parser aus ssg_core.lsp (ssg-load-ini / ssg-ini-get /
|
;; Nutzt den zentralen INI-Parser aus ssg_core.lsp (ssg-load-ini / ssg-ini-get /
|
||||||
@@ -78,6 +79,47 @@
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
;; --- Safearray/Variant-Rueckgabe von vla-getboundingbox in Liste wandeln ---
|
||||||
|
;; BricsCAD liefert ein Safearray, AutoCAD ein Variant mit Safearray.
|
||||||
|
(defun csv:pt->list (v)
|
||||||
|
(cond
|
||||||
|
((= (type v) 'variant) (vlax-safearray->list (vlax-variant-value v)))
|
||||||
|
((= (type v) 'safearray) (vlax-safearray->list v))
|
||||||
|
((listp v) v)
|
||||||
|
(t nil)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
;; --- Bounding-Box (WCS, achsparallel) eines INSERT-Blocks ermitteln ---
|
||||||
|
;; Erzwingt vorher ein vla-update (Regen), da vla-getboundingbox sonst auf
|
||||||
|
;; nicht-regenerierten oder auf eingefrorenen Layern liegenden Bloecken scheitert.
|
||||||
|
;; Rueckgabe: Liste (cx cy cz dx dy dz) -- Mittelpunkt + Ausdehnung, oder nil bei Fehler.
|
||||||
|
(defun csv:get-bbox (ename / obj res minpt maxpt)
|
||||||
|
(setq obj (vlax-ename->vla-object ename))
|
||||||
|
(vl-catch-all-apply 'vla-update (list obj))
|
||||||
|
(setq res
|
||||||
|
(vl-catch-all-apply
|
||||||
|
'(lambda ( / ll ur)
|
||||||
|
(vla-getboundingbox obj 'll 'ur)
|
||||||
|
(list (csv:pt->list ll) (csv:pt->list ur)))))
|
||||||
|
(if (vl-catch-all-error-p res)
|
||||||
|
nil
|
||||||
|
(progn
|
||||||
|
(setq minpt (car res))
|
||||||
|
(setq maxpt (cadr res))
|
||||||
|
(list
|
||||||
|
(/ (+ (car minpt) (car maxpt)) 2.0)
|
||||||
|
(/ (+ (cadr minpt) (cadr maxpt)) 2.0)
|
||||||
|
(/ (+ (caddr minpt) (caddr maxpt)) 2.0)
|
||||||
|
(- (car maxpt) (car minpt))
|
||||||
|
(- (cadr maxpt) (cadr minpt))
|
||||||
|
(- (caddr maxpt) (caddr minpt))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
;; --- Attribute eines INSERT-Blocks als JSON-Objekt lesen ---
|
;; --- Attribute eines INSERT-Blocks als JSON-Objekt lesen ---
|
||||||
;; ename = Entity-Name des INSERT
|
;; ename = Entity-Name des INSERT
|
||||||
;; Rueckgabe: String wie {"TAG1":"Wert1","TAG2":"Wert2"}
|
;; Rueckgabe: String wie {"TAG1":"Wert1","TAG2":"Wert2"}
|
||||||
@@ -111,7 +153,9 @@
|
|||||||
|
|
||||||
|
|
||||||
;; --- Einen INSERT-Block als JSON-Objekt schreiben ---
|
;; --- Einen INSERT-Block als JSON-Objekt schreiben ---
|
||||||
(defun csv:block-to-json (ename / ed blk-name layer pt rotation handle attribs)
|
;; include-bbox = T -> zusaetzlich Bounding-Box (Mitte + Ausdehnung) ermitteln
|
||||||
|
;; und als "bbox"-Objekt anhaengen (nur fuer EXPORTCSV, nicht fuer EXPORTSIVAS).
|
||||||
|
(defun csv:block-to-json (ename include-bbox / ed blk-name layer pt rotation handle attribs bbox bbox-json)
|
||||||
(setq ed (entget ename))
|
(setq ed (entget ename))
|
||||||
(setq blk-name (cdr (assoc 2 ed)))
|
(setq blk-name (cdr (assoc 2 ed)))
|
||||||
(setq layer (cdr (assoc 8 ed)))
|
(setq layer (cdr (assoc 8 ed)))
|
||||||
@@ -120,6 +164,26 @@
|
|||||||
(setq handle (cdr (assoc 5 ed)))
|
(setq handle (cdr (assoc 5 ed)))
|
||||||
(if (null rotation) (setq rotation 0.0))
|
(if (null rotation) (setq rotation 0.0))
|
||||||
(setq attribs (csv:read-attribs ename))
|
(setq attribs (csv:read-attribs ename))
|
||||||
|
(setq bbox-json "")
|
||||||
|
(if include-bbox
|
||||||
|
(progn
|
||||||
|
(setq bbox (csv:get-bbox ename))
|
||||||
|
(if bbox
|
||||||
|
(setq bbox-json
|
||||||
|
(strcat
|
||||||
|
",\"bbox\":{"
|
||||||
|
"\"cx\":" (rtos (nth 0 bbox) 2 4)
|
||||||
|
",\"cy\":" (rtos (nth 1 bbox) 2 4)
|
||||||
|
",\"cz\":" (rtos (nth 2 bbox) 2 4)
|
||||||
|
",\"dx\":" (rtos (nth 3 bbox) 2 4)
|
||||||
|
",\"dy\":" (rtos (nth 4 bbox) 2 4)
|
||||||
|
",\"dz\":" (rtos (nth 5 bbox) 2 4)
|
||||||
|
"}"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
(strcat
|
(strcat
|
||||||
" {\"block_name\":\"" (csv:json-escape blk-name) "\""
|
" {\"block_name\":\"" (csv:json-escape blk-name) "\""
|
||||||
",\"layer\":\"" (csv:json-escape layer) "\""
|
",\"layer\":\"" (csv:json-escape layer) "\""
|
||||||
@@ -129,6 +193,7 @@
|
|||||||
",\"z\":" (rtos (if (caddr pt) (caddr pt) 0.0) 2 4)
|
",\"z\":" (rtos (if (caddr pt) (caddr pt) 0.0) 2 4)
|
||||||
",\"rotation\":" (rtos (* (/ rotation pi) 180.0) 2 4)
|
",\"rotation\":" (rtos (* (/ rotation pi) 180.0) 2 4)
|
||||||
",\"attribs\":" attribs
|
",\"attribs\":" attribs
|
||||||
|
bbox-json
|
||||||
"}"
|
"}"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@@ -203,7 +268,9 @@
|
|||||||
;; label = Anzeigename (z.B. "EXPORTCSV")
|
;; label = Anzeigename (z.B. "EXPORTCSV")
|
||||||
;; py-name = Python-Skript-Name (z.B. "export_csv.py")
|
;; py-name = Python-Skript-Name (z.B. "export_csv.py")
|
||||||
;; csv-name = Ergebnis-CSV-Name (z.B. "export.csv")
|
;; csv-name = Ergebnis-CSV-Name (z.B. "export.csv")
|
||||||
(defun csv:run-export (label py-name csv-name / ss i ename fh out-pfad
|
;; include-bbox = T -> Bounding-Box je Block ermitteln und mit exportieren
|
||||||
|
;; (siehe csv:block-to-json); fuer EXPORTSIVAS nil.
|
||||||
|
(defun csv:run-export (label py-name csv-name include-bbox / ss i ename fh out-pfad
|
||||||
py-skript ergebnis-pfad cmd first-block count out-dir)
|
py-skript ergebnis-pfad cmd first-block count out-dir)
|
||||||
;; Vor dem Export: IDs aller Bloecke sicherstellen und Duplikate korrigieren
|
;; Vor dem Export: IDs aller Bloecke sicherstellen und Duplikate korrigieren
|
||||||
(princ (ssg-textf "exp-check-ids" (list label)))
|
(princ (ssg-textf "exp-check-ids" (list label)))
|
||||||
@@ -254,7 +321,7 @@
|
|||||||
(if (not first-block)
|
(if (not first-block)
|
||||||
(write-line "," fh)
|
(write-line "," fh)
|
||||||
)
|
)
|
||||||
(write-line (csv:block-to-json ename) fh)
|
(write-line (csv:block-to-json ename include-bbox) fh)
|
||||||
(setq first-block nil)
|
(setq first-block nil)
|
||||||
(setq i (1+ i))
|
(setq i (1+ i))
|
||||||
)
|
)
|
||||||
@@ -289,14 +356,18 @@
|
|||||||
(defun c:EXPORTSIVAS ()
|
(defun c:EXPORTSIVAS ()
|
||||||
(csv:run-export "EXPORTSIVAS"
|
(csv:run-export "EXPORTSIVAS"
|
||||||
(export:filename "sivas_script")
|
(export:filename "sivas_script")
|
||||||
(export:filename "sivas_csv"))
|
(export:filename "sivas_csv")
|
||||||
|
nil)
|
||||||
)
|
)
|
||||||
|
|
||||||
;; --- EXPORTCSV: Einfache Item-Liste aller Bloecke (ohne Summierung) ---
|
;; --- EXPORTCSV: Einfache Item-Liste aller Bloecke (ohne Summierung) ---
|
||||||
|
;; Ermittelt zusaetzlich je Block eine Bounding-Box (siehe csv:get-bbox),
|
||||||
|
;; die im Python-Skript als Position/Boundingbox-Spalten ausgegeben wird.
|
||||||
(defun c:EXPORTCSV ()
|
(defun c:EXPORTCSV ()
|
||||||
(csv:run-export "EXPORTCSV"
|
(csv:run-export "EXPORTCSV"
|
||||||
(export:filename "csv_script")
|
(export:filename "csv_script")
|
||||||
(export:filename "csv_csv"))
|
(export:filename "csv_csv")
|
||||||
|
T)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -27,3 +27,33 @@ pattern_variofoerderer= VF_*
|
|||||||
pattern_gefaellestrecke= GF_*
|
pattern_gefaellestrecke= GF_*
|
||||||
pattern_strecke_module= Vario*, Staustrecke*, AUS_Element*, EIN_Element*
|
pattern_strecke_module= Vario*, Staustrecke*, AUS_Element*, EIN_Element*
|
||||||
pattern_ks_subblocks= KS_EIN, KS_AUS, K1, K2, K3, K4
|
pattern_ks_subblocks= KS_EIN, KS_AUS, K1, K2, K3, K4
|
||||||
|
|
||||||
|
[Planquadrate]
|
||||||
|
section=Planquadrate_AN
|
||||||
|
|
||||||
|
# hier kann man im csv Export aus den Koordinaten der Bauteile die Planquadrate berechnen lassen, in denen sie liegen
|
||||||
|
# Zählung ist numerisch oder Alphabetisch möglich, Schrittweite in m (z.B. 2m pro Spalte, 4m pro Zeile)
|
||||||
|
# liegt man im ersten Quadrat, ist diese A/1, oder 1/1 oder 1/A, je nach Formatierung. Die Zählung beginnt immer bei 1
|
||||||
|
[Planquadrate_NA]
|
||||||
|
# z.B. 1/A
|
||||||
|
x_step=2
|
||||||
|
x_description=numerisch # zahlen, von links nach rechts, 2m pro Spalte
|
||||||
|
y_step=4
|
||||||
|
y_description=alphabetisch # Buchstaben von unten nach oben, 4m pro Zeile
|
||||||
|
format= {x}/{y} # Formatierung der Planquadrate, {y} und {x} werden durch die berechneten gerundeten Werte der Objektkoordinaten ersetzt
|
||||||
|
|
||||||
|
[Planquadrate_AN]
|
||||||
|
# z.B. A/1
|
||||||
|
x_step=2
|
||||||
|
x_description=alphabetisch # Buchstaben, von links nach rechts, 2m pro Spalte
|
||||||
|
y_step=2
|
||||||
|
y_description=alphabetisch # Zahlen von unten nach oben, 2m pro Zeile
|
||||||
|
format= {x}/{y}
|
||||||
|
|
||||||
|
[Planquadrate_NN]
|
||||||
|
# z.B. 2/5
|
||||||
|
x_step=2
|
||||||
|
x_description=numerisch # Zahlen, von links nach rechts, 2m pro Spalte
|
||||||
|
y_step=4
|
||||||
|
y_description=numerisch # Zahlen von unten nach oben, 4m pro Zeile
|
||||||
|
format= {x}/{y}
|
||||||
+70
-2
@@ -11,7 +11,16 @@ Aufruf:
|
|||||||
python export_csv.py <export_raw.json> <data_dir> <output.csv>
|
python export_csv.py <export_raw.json> <data_dir> <output.csv>
|
||||||
|
|
||||||
CSV-Format:
|
CSV-Format:
|
||||||
Elementnummer;TeileArt;TeileId;NachbarIds;Bezeichnung;Planquadrat;rotation;Merkmale
|
Elementnummer;TeileArt;TeileId;Bezeichnung;Planquadrat;Anzahl;Position;Boundingbox;Merkmale
|
||||||
|
|
||||||
|
Position und Boundingbox stammen aus der von export.lsp (csv:get-bbox, per
|
||||||
|
vla-getboundingbox) ermittelten Bounding-Box je Block:
|
||||||
|
Position = Mittenkoordinate x, y, z
|
||||||
|
Boundingbox = Ausdehnung (Laenge, Breite, Hoehe) in x, y, z
|
||||||
|
Planquadrat wird aus der x/y-Koordinate des Blocks berechnet, siehe
|
||||||
|
export_planquadrat.py ([Planquadrate] in cfg/export.cfg).
|
||||||
|
Position, Boundingbox und Planquadrat sind nur fuer EXPORTCSV vorhanden
|
||||||
|
(nicht EXPORTSIVAS) - siehe csv:run-export.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import json
|
import json
|
||||||
@@ -19,8 +28,10 @@ import sys
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
from export_blockpatterns import load_patterns, matches_any
|
from export_blockpatterns import load_patterns, matches_any
|
||||||
|
from export_planquadrat import load_planquadrat_config, compute_planquadrat
|
||||||
|
|
||||||
BLOCKPATTERNS = load_patterns()
|
BLOCKPATTERNS = load_patterns()
|
||||||
|
PLANQUADRAT_CFG = load_planquadrat_config()
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
@@ -219,6 +230,41 @@ def build_kreisel_merkmale(block):
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
# Bounding-Box-Spalten (Position/Boundingbox)
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
def bbox_columns(block):
|
||||||
|
"""Liest die von export.lsp (csv:get-bbox) ermittelte Bounding-Box.
|
||||||
|
|
||||||
|
Rueckgabe: dict mit "position" (Mittenkoordinate x,y,z) und "boundingbox"
|
||||||
|
(Ausdehnung x,y,z) als Strings, oder leere Strings falls kein bbox-Feld
|
||||||
|
vorhanden ist (z.B. EXPORTSIVAS oder die synthetische Omniflo-Sum-Zeile).
|
||||||
|
"""
|
||||||
|
bbox = block.get("bbox")
|
||||||
|
if not bbox:
|
||||||
|
return {"position": "", "boundingbox": ""}
|
||||||
|
return {
|
||||||
|
"position": f'{bbox.get("cx", 0):.2f}, {bbox.get("cy", 0):.2f}, {bbox.get("cz", 0):.2f}',
|
||||||
|
"boundingbox": f'{bbox.get("dx", 0):.2f}, {bbox.get("dy", 0):.2f}, {bbox.get("dz", 0):.2f}',
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def planquadrat_column(block):
|
||||||
|
"""Berechnet das Planquadrat aus x/y des Blocks (siehe export_planquadrat.py).
|
||||||
|
|
||||||
|
Leerer String, wenn keine Planquadrat-Konfiguration geladen werden konnte
|
||||||
|
(fehlende/unvollstaendige [Planquadrate]-Sektion in cfg/export.cfg).
|
||||||
|
"""
|
||||||
|
if PLANQUADRAT_CFG is None:
|
||||||
|
return ""
|
||||||
|
x = block.get("x")
|
||||||
|
y = block.get("y")
|
||||||
|
if x is None or y is None:
|
||||||
|
return ""
|
||||||
|
return compute_planquadrat(float(x), float(y), PLANQUADRAT_CFG)
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Bekannte Blocknamen
|
# Bekannte Blocknamen
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
@@ -268,7 +314,9 @@ def process_blocks(blocks, lookup):
|
|||||||
"teileart": "Omniflo Kurve",
|
"teileart": "Omniflo Kurve",
|
||||||
"teileid": shape_id,
|
"teileid": shape_id,
|
||||||
"bezeichnung": f"OFBogen :{bogen_count}",
|
"bezeichnung": f"OFBogen :{bogen_count}",
|
||||||
|
"planquadrat": planquadrat_column(block),
|
||||||
"merkmale": build_bogen_merkmale(block, eintrag),
|
"merkmale": build_bogen_merkmale(block, eintrag),
|
||||||
|
**bbox_columns(block),
|
||||||
})
|
})
|
||||||
|
|
||||||
elif typ == "weiche":
|
elif typ == "weiche":
|
||||||
@@ -279,7 +327,9 @@ def process_blocks(blocks, lookup):
|
|||||||
"teileart": "Omniflo Weiche",
|
"teileart": "Omniflo Weiche",
|
||||||
"teileid": shape_id,
|
"teileid": shape_id,
|
||||||
"bezeichnung": f"OFWeiche :{weiche_count[wt]}",
|
"bezeichnung": f"OFWeiche :{weiche_count[wt]}",
|
||||||
|
"planquadrat": planquadrat_column(block),
|
||||||
"merkmale": build_weiche_merkmale(block, eintrag),
|
"merkmale": build_weiche_merkmale(block, eintrag),
|
||||||
|
**bbox_columns(block),
|
||||||
})
|
})
|
||||||
subtyp = weichensubtyp(block, eintrag)
|
subtyp = weichensubtyp(block, eintrag)
|
||||||
if subtyp == "weichenkoerper":
|
if subtyp == "weichenkoerper":
|
||||||
@@ -304,7 +354,9 @@ def process_blocks(blocks, lookup):
|
|||||||
"teileart": "Omniflo Gerade",
|
"teileart": "Omniflo Gerade",
|
||||||
"teileid": block.get("attribs", {}).get("ID", "0000"),
|
"teileid": block.get("attribs", {}).get("ID", "0000"),
|
||||||
"bezeichnung": f"OFGerade :{gerade_count}",
|
"bezeichnung": f"OFGerade :{gerade_count}",
|
||||||
|
"planquadrat": planquadrat_column(block),
|
||||||
"merkmale": build_gerade_merkmale(block),
|
"merkmale": build_gerade_merkmale(block),
|
||||||
|
**bbox_columns(block),
|
||||||
})
|
})
|
||||||
len_ap110_mm += get_laenge_mm(block)
|
len_ap110_mm += get_laenge_mm(block)
|
||||||
continue
|
continue
|
||||||
@@ -318,7 +370,9 @@ def process_blocks(blocks, lookup):
|
|||||||
"teileart": "ILS 2.0 Strecke",
|
"teileart": "ILS 2.0 Strecke",
|
||||||
"teileid": block.get("attribs", {}).get("ID", "0000"),
|
"teileid": block.get("attribs", {}).get("ID", "0000"),
|
||||||
"bezeichnung": f"VarioFoerderer :{vf_count}",
|
"bezeichnung": f"VarioFoerderer :{vf_count}",
|
||||||
|
"planquadrat": planquadrat_column(block),
|
||||||
"merkmale": build_variofoerderer_merkmale(block),
|
"merkmale": build_variofoerderer_merkmale(block),
|
||||||
|
**bbox_columns(block),
|
||||||
})
|
})
|
||||||
continue
|
continue
|
||||||
|
|
||||||
@@ -331,7 +385,9 @@ def process_blocks(blocks, lookup):
|
|||||||
"teileart": "ILS 2.0 Gefaellestrecke",
|
"teileart": "ILS 2.0 Gefaellestrecke",
|
||||||
"teileid": block.get("attribs", {}).get("ID", "0000"),
|
"teileid": block.get("attribs", {}).get("ID", "0000"),
|
||||||
"bezeichnung": f"Gefaellestrecke :{gf_count}",
|
"bezeichnung": f"Gefaellestrecke :{gf_count}",
|
||||||
|
"planquadrat": planquadrat_column(block),
|
||||||
"merkmale": build_variofoerderer_merkmale(block),
|
"merkmale": build_variofoerderer_merkmale(block),
|
||||||
|
**bbox_columns(block),
|
||||||
})
|
})
|
||||||
continue
|
continue
|
||||||
|
|
||||||
@@ -345,7 +401,9 @@ def process_blocks(blocks, lookup):
|
|||||||
"teileart": "ILS 2.0 Eckrad",
|
"teileart": "ILS 2.0 Eckrad",
|
||||||
"teileid": block.get("attribs", {}).get("ID", "0000"),
|
"teileid": block.get("attribs", {}).get("ID", "0000"),
|
||||||
"bezeichnung": f"Eckrad :{eckrad_count}",
|
"bezeichnung": f"Eckrad :{eckrad_count}",
|
||||||
|
"planquadrat": planquadrat_column(block),
|
||||||
"merkmale": build_kreisel_merkmale(block),
|
"merkmale": build_kreisel_merkmale(block),
|
||||||
|
**bbox_columns(block),
|
||||||
})
|
})
|
||||||
continue
|
continue
|
||||||
|
|
||||||
@@ -358,7 +416,9 @@ def process_blocks(blocks, lookup):
|
|||||||
"teileart": "ILS 2.0 Kreisel",
|
"teileart": "ILS 2.0 Kreisel",
|
||||||
"teileid": block.get("attribs", {}).get("ID", "0000"),
|
"teileid": block.get("attribs", {}).get("ID", "0000"),
|
||||||
"bezeichnung": f"Kreisel :{kreisel_count}",
|
"bezeichnung": f"Kreisel :{kreisel_count}",
|
||||||
|
"planquadrat": planquadrat_column(block),
|
||||||
"merkmale": build_kreisel_merkmale(block),
|
"merkmale": build_kreisel_merkmale(block),
|
||||||
|
**bbox_columns(block),
|
||||||
})
|
})
|
||||||
continue
|
continue
|
||||||
|
|
||||||
@@ -371,7 +431,9 @@ def process_blocks(blocks, lookup):
|
|||||||
"teileart": "ILS 2.0 Strecke - Modul",
|
"teileart": "ILS 2.0 Strecke - Modul",
|
||||||
"teileid": block.get("attribs", {}).get("ID", "0000"),
|
"teileid": block.get("attribs", {}).get("ID", "0000"),
|
||||||
"bezeichnung": f"Streckenmodul :{strecke_modul_count}",
|
"bezeichnung": f"Streckenmodul :{strecke_modul_count}",
|
||||||
|
"planquadrat": planquadrat_column(block),
|
||||||
"merkmale": {"Blockname": bname},
|
"merkmale": {"Blockname": bname},
|
||||||
|
**bbox_columns(block),
|
||||||
})
|
})
|
||||||
continue
|
continue
|
||||||
|
|
||||||
@@ -382,9 +444,12 @@ def process_blocks(blocks, lookup):
|
|||||||
"teileart": "Omniflo Sum",
|
"teileart": "Omniflo Sum",
|
||||||
"teileid": "autogenerated_of_json",
|
"teileid": "autogenerated_of_json",
|
||||||
"bezeichnung": "Omniflo sum",
|
"bezeichnung": "Omniflo sum",
|
||||||
|
"planquadrat": "",
|
||||||
"merkmale": build_omni_sum_merkmale(
|
"merkmale": build_omni_sum_merkmale(
|
||||||
bogen_count, cnt_wk, cnt_einzel, cnt_delta, cnt_doppel, cnt_stern,
|
bogen_count, cnt_wk, cnt_einzel, cnt_delta, cnt_doppel, cnt_stern,
|
||||||
len_ap110_mm, len_ap60_mm),
|
len_ap110_mm, len_ap60_mm),
|
||||||
|
"position": "",
|
||||||
|
"boundingbox": "",
|
||||||
})
|
})
|
||||||
|
|
||||||
return items
|
return items
|
||||||
@@ -401,7 +466,10 @@ def format_csv_line(item):
|
|||||||
f';"{item["teileart"]}"'
|
f';"{item["teileart"]}"'
|
||||||
f';"{item["teileid"]}"'
|
f';"{item["teileid"]}"'
|
||||||
f';"{item["bezeichnung"]}"'
|
f';"{item["bezeichnung"]}"'
|
||||||
|
f';"{item["planquadrat"]}"'
|
||||||
f';1'
|
f';1'
|
||||||
|
f';"{item["position"]}"'
|
||||||
|
f';"{item["boundingbox"]}"'
|
||||||
f';{merkmale_json}'
|
f';{merkmale_json}'
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -433,7 +501,7 @@ def main():
|
|||||||
|
|
||||||
items = process_blocks(blocks, lookup)
|
items = process_blocks(blocks, lookup)
|
||||||
|
|
||||||
header = "Elementnummer;TeileArt;TeileId;Bezeichnung;Anzahl;Merkmale"
|
header = "Elementnummer;TeileArt;TeileId;Bezeichnung;Planquadrat;Anzahl;Position;Boundingbox;Merkmale"
|
||||||
with open(output_csv, "w", encoding="utf-8") as f:
|
with open(output_csv, "w", encoding="utf-8") as f:
|
||||||
f.write(header + "\n")
|
f.write(header + "\n")
|
||||||
for item in items:
|
for item in items:
|
||||||
|
|||||||
@@ -0,0 +1,71 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
"""
|
||||||
|
export_planquadrat.py - Berechnet das Planquadrat eines Blocks aus x/y-Koordinate.
|
||||||
|
|
||||||
|
Liest die aktive Planquadrat-Konfiguration aus cfg/export.cfg
|
||||||
|
([Planquadrate] -> section=<Name der Sub-Sektion>, z.B. Planquadrate_AN) und
|
||||||
|
rundet die x/y-Koordinate eines Blocks (mm, wie im Roh-JSON von export.lsp)
|
||||||
|
je Achse auf die konfigurierte Schrittweite (in Metern) herunter.
|
||||||
|
|
||||||
|
Nur von export_csv.py genutzt (EXPORTCSV), nicht von export_sivas.py.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import configparser
|
||||||
|
|
||||||
|
from export_blockpatterns import cfg_path_from_env
|
||||||
|
|
||||||
|
|
||||||
|
def load_planquadrat_config(cfg_path=None):
|
||||||
|
"""Liest die aktive Planquadrat-Konfiguration aus export.cfg.
|
||||||
|
|
||||||
|
Rueckgabe: dict mit x_step_mm, x_alpha, y_step_mm, y_alpha, format,
|
||||||
|
oder None, wenn [Planquadrate] bzw. die referenzierte Sub-Sektion fehlt.
|
||||||
|
"""
|
||||||
|
if cfg_path is None:
|
||||||
|
cfg_path = cfg_path_from_env()
|
||||||
|
# inline_comment_prefixes noetig, da export.cfg Werte wie
|
||||||
|
# "numerisch # zahlen, von links nach rechts, 2m pro Spalte" nutzt.
|
||||||
|
parser = configparser.ConfigParser(inline_comment_prefixes=("#",))
|
||||||
|
parser.read(cfg_path, encoding="utf-8")
|
||||||
|
|
||||||
|
if not parser.has_section("Planquadrate"):
|
||||||
|
return None
|
||||||
|
section_name = parser.get("Planquadrate", "section", fallback=None)
|
||||||
|
if not section_name or not parser.has_section(section_name):
|
||||||
|
return None
|
||||||
|
|
||||||
|
sec = parser[section_name]
|
||||||
|
return {
|
||||||
|
"x_step_mm": float(sec.get("x_step", "1")) * 1000.0,
|
||||||
|
"x_alpha": sec.get("x_description", "numerisch").strip().lower().startswith("alpha"),
|
||||||
|
"y_step_mm": float(sec.get("y_step", "1")) * 1000.0,
|
||||||
|
"y_alpha": sec.get("y_description", "numerisch").strip().lower().startswith("alpha"),
|
||||||
|
"format": sec.get("format", "{x}/{y}").strip(),
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def _index_to_alpha(n):
|
||||||
|
"""Wandelt einen 1-basierten Index in eine Buchstaben-Bezeichnung um.
|
||||||
|
|
||||||
|
1=A, 26=Z, 27=AA, 28=AB, ... (wie Excel-Spaltennamen).
|
||||||
|
"""
|
||||||
|
result = ""
|
||||||
|
while n > 0:
|
||||||
|
n, remainder = divmod(n - 1, 26)
|
||||||
|
result = chr(65 + remainder) + result
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def _index_for(coord_mm, step_mm):
|
||||||
|
"""1-basierter Planquadrat-Index einer Koordinate fuer eine Schrittweite."""
|
||||||
|
return int(coord_mm // step_mm) + 1
|
||||||
|
|
||||||
|
|
||||||
|
def compute_planquadrat(x_mm, y_mm, cfg):
|
||||||
|
"""Berechnet die Planquadrat-Bezeichnung fuer eine x/y-Koordinate (mm)."""
|
||||||
|
x_idx = _index_for(x_mm, cfg["x_step_mm"])
|
||||||
|
y_idx = _index_for(y_mm, cfg["y_step_mm"])
|
||||||
|
x_label = _index_to_alpha(x_idx) if cfg["x_alpha"] else str(x_idx)
|
||||||
|
y_label = _index_to_alpha(y_idx) if cfg["y_alpha"] else str(y_idx)
|
||||||
|
return cfg["format"].format(x=x_label, y=y_label)
|
||||||
@@ -1,109 +1,109 @@
|
|||||||
Elementnummer;TeileArt;TeileId;Bezeichnung;Anzahl;Merkmale
|
Elementnummer;TeileArt;TeileId;Bezeichnung;Planquadrat;Anzahl;Position;Boundingbox;Merkmale
|
||||||
1;"Omniflo Kurve";"0000";"OFBogen :1";1;{"Kurvenwinkel": 22.5, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104025"}
|
1;"Omniflo Kurve";"0000";"OFBogen :1";"A/A";1;"";"";{"Kurvenwinkel": 22.5, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104025"}
|
||||||
2;"Omniflo Kurve";"0000";"OFBogen :2";1;{"Kurvenwinkel": 22.5, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104025+0_B10090"}
|
2;"Omniflo Kurve";"0000";"OFBogen :2";"A/A";1;"";"";{"Kurvenwinkel": 22.5, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104025+0_B10090"}
|
||||||
3;"Omniflo Kurve";"0000";"OFBogen :3";1;{"Kurvenwinkel": 22.5, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104025+0_B10091"}
|
3;"Omniflo Kurve";"0000";"OFBogen :3";"A/A";1;"";"";{"Kurvenwinkel": 22.5, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104025+0_B10091"}
|
||||||
4;"Omniflo Kurve";"0000";"OFBogen :4";1;{"Kurvenwinkel": 45.0, "Radius": 400.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104021"}
|
4;"Omniflo Kurve";"0000";"OFBogen :4";"A/A";1;"";"";{"Kurvenwinkel": 45.0, "Radius": 400.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104021"}
|
||||||
5;"Omniflo Kurve";"0000";"OFBogen :5";1;{"Kurvenwinkel": 45.0, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104026"}
|
5;"Omniflo Kurve";"0000";"OFBogen :5";"A/A";1;"";"";{"Kurvenwinkel": 45.0, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104026"}
|
||||||
6;"Omniflo Kurve";"0000";"OFBogen :6";1;{"Kurvenwinkel": 45.0, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104026+0_B10071"}
|
6;"Omniflo Kurve";"0000";"OFBogen :6";"A/A";1;"";"";{"Kurvenwinkel": 45.0, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104026+0_B10071"}
|
||||||
7;"Omniflo Kurve";"0000";"OFBogen :7";1;{"Kurvenwinkel": 45.0, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104037"}
|
7;"Omniflo Kurve";"0000";"OFBogen :7";"A/A";1;"";"";{"Kurvenwinkel": 45.0, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104037"}
|
||||||
8;"Omniflo Kurve";"0000";"OFBogen :8";1;{"Kurvenwinkel": 45.0, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104029"}
|
8;"Omniflo Kurve";"0000";"OFBogen :8";"A/A";1;"";"";{"Kurvenwinkel": 45.0, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104029"}
|
||||||
9;"Omniflo Kurve";"0000";"OFBogen :9";1;{"Kurvenwinkel": 45.0, "Radius": 630.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104031"}
|
9;"Omniflo Kurve";"0000";"OFBogen :9";"A/A";1;"";"";{"Kurvenwinkel": 45.0, "Radius": 630.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104031"}
|
||||||
10;"Omniflo Kurve";"0000";"OFBogen :10";1;{"Kurvenwinkel": 45.0, "Radius": 630.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104031+0_B10060"}
|
10;"Omniflo Kurve";"0000";"OFBogen :10";"A/A";1;"";"";{"Kurvenwinkel": 45.0, "Radius": 630.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104031+0_B10060"}
|
||||||
11;"Omniflo Kurve";"0000";"OFBogen :11";1;{"Kurvenwinkel": 45.0, "Radius": 630.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104031+0_B10070"}
|
11;"Omniflo Kurve";"0000";"OFBogen :11";"B/A";1;"";"";{"Kurvenwinkel": 45.0, "Radius": 630.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104031+0_B10070"}
|
||||||
12;"Omniflo Kurve";"0000";"OFBogen :12";1;{"Kurvenwinkel": 67.5, "Radius": 400.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104024"}
|
12;"Omniflo Kurve";"0000";"OFBogen :12";"B/A";1;"";"";{"Kurvenwinkel": 67.5, "Radius": 400.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104024"}
|
||||||
13;"Omniflo Kurve";"0000";"OFBogen :13";1;{"Kurvenwinkel": 67.5, "Radius": 400.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104024+0_B10081"}
|
13;"Omniflo Kurve";"0000";"OFBogen :13";"B/A";1;"";"";{"Kurvenwinkel": 67.5, "Radius": 400.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104024+0_B10081"}
|
||||||
14;"Omniflo Kurve";"0000";"OFBogen :14";1;{"Kurvenwinkel": 67.5, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104027"}
|
14;"Omniflo Kurve";"0000";"OFBogen :14";"B/A";1;"";"";{"Kurvenwinkel": 67.5, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104027"}
|
||||||
15;"Omniflo Kurve";"0000";"OFBogen :15";1;{"Kurvenwinkel": 67.5, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104027+0_B10080"}
|
15;"Omniflo Kurve";"0000";"OFBogen :15";"B/A";1;"";"";{"Kurvenwinkel": 67.5, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104027+0_B10080"}
|
||||||
16;"Omniflo Kurve";"0000";"OFBogen :16";1;{"Kurvenwinkel": 67.5, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104028"}
|
16;"Omniflo Kurve";"0000";"OFBogen :16";"B/A";1;"";"";{"Kurvenwinkel": 67.5, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104028"}
|
||||||
17;"Omniflo Kurve";"0000";"OFBogen :17";1;{"Kurvenwinkel": 67.5, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104065"}
|
17;"Omniflo Kurve";"0000";"OFBogen :17";"B/A";1;"";"";{"Kurvenwinkel": 67.5, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104065"}
|
||||||
18;"Omniflo Kurve";"0000";"OFBogen :18";1;{"Kurvenwinkel": 90.0, "Radius": 400.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104022"}
|
18;"Omniflo Kurve";"0000";"OFBogen :18";"B/A";1;"";"";{"Kurvenwinkel": 90.0, "Radius": 400.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104022"}
|
||||||
19;"Omniflo Kurve";"0000";"OFBogen :19";1;{"Kurvenwinkel": 90.0, "Radius": 500.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104030"}
|
19;"Omniflo Kurve";"0000";"OFBogen :19";"B/A";1;"";"";{"Kurvenwinkel": 90.0, "Radius": 500.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104030"}
|
||||||
20;"Omniflo Kurve";"0000";"OFBogen :20";1;{"Kurvenwinkel": 90.0, "Radius": 630.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104033"}
|
20;"Omniflo Kurve";"0000";"OFBogen :20";"B/A";1;"";"";{"Kurvenwinkel": 90.0, "Radius": 630.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104033"}
|
||||||
21;"Omniflo Kurve";"0000";"OFBogen :21";1;{"Kurvenwinkel": 90.0, "Radius": 630.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104033+0_B10040"}
|
21;"Omniflo Kurve";"0000";"OFBogen :21";"C/A";1;"";"";{"Kurvenwinkel": 90.0, "Radius": 630.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104033+0_B10040"}
|
||||||
22;"Omniflo Kurve";"0000";"OFBogen :22";1;{"Kurvenwinkel": 90.0, "Radius": 630.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104033+0_B10050"}
|
22;"Omniflo Kurve";"0000";"OFBogen :22";"C/A";1;"";"";{"Kurvenwinkel": 90.0, "Radius": 630.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104033+0_B10050"}
|
||||||
23;"Omniflo Kurve";"0000";"OFBogen :23";1;{"Kurvenwinkel": 90.0, "Radius": 630.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104035"}
|
23;"Omniflo Kurve";"0000";"OFBogen :23";"C/A";1;"";"";{"Kurvenwinkel": 90.0, "Radius": 630.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104035"}
|
||||||
24;"Omniflo Kurve";"0000";"OFBogen :24";1;{"Kurvenwinkel": 90.0, "Radius": 630.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104041"}
|
24;"Omniflo Kurve";"0000";"OFBogen :24";"C/A";1;"";"";{"Kurvenwinkel": 90.0, "Radius": 630.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104041"}
|
||||||
25;"Omniflo Kurve";"0000";"OFBogen :25";1;{"Kurvenwinkel": 90.0, "Radius": 630.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104034"}
|
25;"Omniflo Kurve";"0000";"OFBogen :25";"C/A";1;"";"";{"Kurvenwinkel": 90.0, "Radius": 630.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104034"}
|
||||||
26;"Omniflo Kurve";"0000";"OFBogen :26";1;{"Kurvenwinkel": 90.0, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104066"}
|
26;"Omniflo Kurve";"0000";"OFBogen :26";"C/A";1;"";"";{"Kurvenwinkel": 90.0, "Radius": 550.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104066"}
|
||||||
27;"Omniflo Kurve";"0000";"OFBogen :27";1;{"Kurvenwinkel": 180.0, "Radius": 650.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104043"}
|
27;"Omniflo Kurve";"0000";"OFBogen :27";"C/A";1;"";"";{"Kurvenwinkel": 180.0, "Radius": 650.0, "Höhe": "2000", "Drehung": 0.0, "SivasNummer": "821104043"}
|
||||||
28;"Omniflo Weiche";"0000";"OFWeiche :1";1;{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 22.5, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834342011"}
|
28;"Omniflo Weiche";"0000";"OFWeiche :1";"C/A";1;"";"";{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 22.5, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834342011"}
|
||||||
29;"Omniflo Weiche";"0000";"OFWeiche :2";1;{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 22.5, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834342001"}
|
29;"Omniflo Weiche";"0000";"OFWeiche :2";"C/A";1;"";"";{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 22.5, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834342001"}
|
||||||
30;"Omniflo Weiche";"0000";"OFWeiche :3";1;{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 22.5, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834342012"}
|
30;"Omniflo Weiche";"0000";"OFWeiche :3";"C/A";1;"";"";{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 22.5, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834342012"}
|
||||||
31;"Omniflo Weiche";"0000";"OFWeiche :4";1;{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 22.5, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834342002"}
|
31;"Omniflo Weiche";"0000";"OFWeiche :4";"D/A";1;"";"";{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 22.5, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834342002"}
|
||||||
32;"Omniflo Weiche";"0000";"OFWeiche :1";1;{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 22.5, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834342100"}
|
32;"Omniflo Weiche";"0000";"OFWeiche :1";"D/A";1;"";"";{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 22.5, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834342100"}
|
||||||
33;"Omniflo Weiche";"0000";"OFWeiche :2";1;{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 22.5, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834342101"}
|
33;"Omniflo Weiche";"0000";"OFWeiche :2";"D/A";1;"";"";{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 22.5, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834342101"}
|
||||||
34;"Omniflo Weiche";"0000";"OFWeiche :1";1;{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 22.5, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834342200"}
|
34;"Omniflo Weiche";"0000";"OFWeiche :1";"D/A";1;"";"";{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 22.5, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834342200"}
|
||||||
35;"Omniflo Weiche";"0000";"OFWeiche :2";1;{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 22.5, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834342201"}
|
35;"Omniflo Weiche";"0000";"OFWeiche :2";"D/A";1;"";"";{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 22.5, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834342201"}
|
||||||
36;"Omniflo Weiche";"0000";"OFWeiche :5";1;{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372001"}
|
36;"Omniflo Weiche";"0000";"OFWeiche :5";"D/A";1;"";"";{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372001"}
|
||||||
37;"Omniflo Weiche";"0000";"OFWeiche :6";1;{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372002"}
|
37;"Omniflo Weiche";"0000";"OFWeiche :6";"D/A";1;"";"";{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372002"}
|
||||||
38;"Omniflo Weiche";"0000";"OFWeiche :7";1;{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372002+0_BG090090"}
|
38;"Omniflo Weiche";"0000";"OFWeiche :7";"D/A";1;"";"";{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372002+0_BG090090"}
|
||||||
39;"Omniflo Weiche";"0000";"OFWeiche :8";1;{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372004"}
|
39;"Omniflo Weiche";"0000";"OFWeiche :8";"D/A";1;"";"";{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372004"}
|
||||||
40;"Omniflo Weiche";"0000";"OFWeiche :9";1;{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372005"}
|
40;"Omniflo Weiche";"0000";"OFWeiche :9";"D/A";1;"";"";{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372005"}
|
||||||
41;"Omniflo Weiche";"0000";"OFWeiche :10";1;{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372005+0_BG090090"}
|
41;"Omniflo Weiche";"0000";"OFWeiche :10";"E/A";1;"";"";{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372005+0_BG090090"}
|
||||||
42;"Omniflo Weiche";"0000";"OFWeiche :11";1;{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372007"}
|
42;"Omniflo Weiche";"0000";"OFWeiche :11";"E/A";1;"";"";{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372007"}
|
||||||
43;"Omniflo Weiche";"0000";"OFWeiche :12";1;{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372008"}
|
43;"Omniflo Weiche";"0000";"OFWeiche :12";"E/A";1;"";"";{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372008"}
|
||||||
44;"Omniflo Weiche";"0000";"OFWeiche :13";1;{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372008+0_BG190090"}
|
44;"Omniflo Weiche";"0000";"OFWeiche :13";"E/A";1;"";"";{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372008+0_BG190090"}
|
||||||
45;"Omniflo Weiche";"0000";"OFWeiche :14";1;{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372010"}
|
45;"Omniflo Weiche";"0000";"OFWeiche :14";"E/A";1;"";"";{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372010"}
|
||||||
46;"Omniflo Weiche";"0000";"OFWeiche :15";1;{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372011"}
|
46;"Omniflo Weiche";"0000";"OFWeiche :15";"E/A";1;"";"";{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372011"}
|
||||||
47;"Omniflo Weiche";"0000";"OFWeiche :16";1;{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372011+0_BG190090"}
|
47;"Omniflo Weiche";"0000";"OFWeiche :16";"E/A";1;"";"";{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372011+0_BG190090"}
|
||||||
48;"Omniflo Weiche";"0000";"OFWeiche :17";1;{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372021"}
|
48;"Omniflo Weiche";"0000";"OFWeiche :17";"E/A";1;"";"";{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372021"}
|
||||||
49;"Omniflo Weiche";"0000";"OFWeiche :18";1;{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372022"}
|
49;"Omniflo Weiche";"0000";"OFWeiche :18";"E/A";1;"";"";{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372022"}
|
||||||
50;"Omniflo Weiche";"0000";"OFWeiche :19";1;{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372024"}
|
50;"Omniflo Weiche";"0000";"OFWeiche :19";"E/A";1;"";"";{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372024"}
|
||||||
51;"Omniflo Weiche";"0000";"OFWeiche :20";1;{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372025"}
|
51;"Omniflo Weiche";"0000";"OFWeiche :20";"F/A";1;"";"";{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372025"}
|
||||||
52;"Omniflo Weiche";"0000";"OFWeiche :21";1;{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372027"}
|
52;"Omniflo Weiche";"0000";"OFWeiche :21";"F/A";1;"";"";{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372027"}
|
||||||
53;"Omniflo Weiche";"0000";"OFWeiche :22";1;{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372028"}
|
53;"Omniflo Weiche";"0000";"OFWeiche :22";"F/A";1;"";"";{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372028"}
|
||||||
54;"Omniflo Weiche";"0000";"OFWeiche :23";1;{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372028+0_BG080090"}
|
54;"Omniflo Weiche";"0000";"OFWeiche :23";"F/A";1;"";"";{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372028+0_BG080090"}
|
||||||
55;"Omniflo Weiche";"0000";"OFWeiche :24";1;{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372030"}
|
55;"Omniflo Weiche";"0000";"OFWeiche :24";"F/A";1;"";"";{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372030"}
|
||||||
56;"Omniflo Weiche";"0000";"OFWeiche :25";1;{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372031"}
|
56;"Omniflo Weiche";"0000";"OFWeiche :25";"F/A";1;"";"";{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372031"}
|
||||||
57;"Omniflo Weiche";"0000";"OFWeiche :26";1;{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372031+0_BG080090"}
|
57;"Omniflo Weiche";"0000";"OFWeiche :26";"F/A";1;"";"";{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372031+0_BG080090"}
|
||||||
58;"Omniflo Weiche";"0000";"OFWeiche :27";1;{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 0.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372047"}
|
58;"Omniflo Weiche";"0000";"OFWeiche :27";"F/A";1;"";"";{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 0.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372047"}
|
||||||
59;"Omniflo Weiche";"0000";"OFWeiche :28";1;{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 0.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372048"}
|
59;"Omniflo Weiche";"0000";"OFWeiche :28";"F/A";1;"";"";{"Weichentyp": "Einzelweiche", "Richtung": "1", "Weichenwinkel": 0.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372048"}
|
||||||
60;"Omniflo Weiche";"0000";"OFWeiche :29";1;{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 0.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372050"}
|
60;"Omniflo Weiche";"0000";"OFWeiche :29";"F/A";1;"";"";{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 0.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372050"}
|
||||||
61;"Omniflo Weiche";"0000";"OFWeiche :30";1;{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 0.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372051"}
|
61;"Omniflo Weiche";"0000";"OFWeiche :30";"G/A";1;"";"";{"Weichentyp": "Einzelweiche", "Richtung": "2", "Weichenwinkel": 0.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372051"}
|
||||||
62;"Omniflo Weiche";"0000";"OFWeiche :3";1;{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372100"}
|
62;"Omniflo Weiche";"0000";"OFWeiche :3";"G/A";1;"";"";{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372100"}
|
||||||
63;"Omniflo Weiche";"0000";"OFWeiche :4";1;{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372101"}
|
63;"Omniflo Weiche";"0000";"OFWeiche :4";"G/A";1;"";"";{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372101"}
|
||||||
64;"Omniflo Weiche";"0000";"OFWeiche :5";1;{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG090090+834372101"}
|
64;"Omniflo Weiche";"0000";"OFWeiche :5";"G/A";1;"";"";{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG090090+834372101"}
|
||||||
65;"Omniflo Weiche";"0000";"OFWeiche :6";1;{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372101+0_BG090090"}
|
65;"Omniflo Weiche";"0000";"OFWeiche :6";"G/A";1;"";"";{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372101+0_BG090090"}
|
||||||
66;"Omniflo Weiche";"0000";"OFWeiche :7";1;{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG090090+834372101+0_BG090090"}
|
66;"Omniflo Weiche";"0000";"OFWeiche :7";"G/A";1;"";"";{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG090090+834372101+0_BG090090"}
|
||||||
67;"Omniflo Weiche";"0000";"OFWeiche :8";1;{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372103"}
|
67;"Omniflo Weiche";"0000";"OFWeiche :8";"G/A";1;"";"";{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372103"}
|
||||||
68;"Omniflo Weiche";"0000";"OFWeiche :9";1;{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372104"}
|
68;"Omniflo Weiche";"0000";"OFWeiche :9";"G/A";1;"";"";{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372104"}
|
||||||
69;"Omniflo Weiche";"0000";"OFWeiche :10";1;{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG190090+834372104"}
|
69;"Omniflo Weiche";"0000";"OFWeiche :10";"G/A";1;"";"";{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG190090+834372104"}
|
||||||
70;"Omniflo Weiche";"0000";"OFWeiche :11";1;{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372104+0_BG190090"}
|
70;"Omniflo Weiche";"0000";"OFWeiche :11";"G/A";1;"";"";{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372104+0_BG190090"}
|
||||||
71;"Omniflo Weiche";"0000";"OFWeiche :12";1;{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG190090+834372104+0_BG190090"}
|
71;"Omniflo Weiche";"0000";"OFWeiche :12";"H/A";1;"";"";{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG190090+834372104+0_BG190090"}
|
||||||
72;"Omniflo Weiche";"0000";"OFWeiche :13";1;{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372106"}
|
72;"Omniflo Weiche";"0000";"OFWeiche :13";"H/A";1;"";"";{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372106"}
|
||||||
73;"Omniflo Weiche";"0000";"OFWeiche :14";1;{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372107"}
|
73;"Omniflo Weiche";"0000";"OFWeiche :14";"H/A";1;"";"";{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372107"}
|
||||||
74;"Omniflo Weiche";"0000";"OFWeiche :15";1;{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372109"}
|
74;"Omniflo Weiche";"0000";"OFWeiche :15";"H/A";1;"";"";{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372109"}
|
||||||
75;"Omniflo Weiche";"0000";"OFWeiche :16";1;{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372110"}
|
75;"Omniflo Weiche";"0000";"OFWeiche :16";"H/A";1;"";"";{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372110"}
|
||||||
76;"Omniflo Weiche";"0000";"OFWeiche :17";1;{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG080090+834372110"}
|
76;"Omniflo Weiche";"0000";"OFWeiche :17";"H/A";1;"";"";{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG080090+834372110"}
|
||||||
77;"Omniflo Weiche";"0000";"OFWeiche :18";1;{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372110+0_BG080090"}
|
77;"Omniflo Weiche";"0000";"OFWeiche :18";"H/A";1;"";"";{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372110+0_BG080090"}
|
||||||
78;"Omniflo Weiche";"0000";"OFWeiche :19";1;{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG080090+834372110+0_BG080090"}
|
78;"Omniflo Weiche";"0000";"OFWeiche :19";"H/A";1;"";"";{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG080090+834372110+0_BG080090"}
|
||||||
79;"Omniflo Weiche";"0000";"OFWeiche :20";1;{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 0.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372115"}
|
79;"Omniflo Weiche";"0000";"OFWeiche :20";"H/A";1;"";"";{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 0.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372115"}
|
||||||
80;"Omniflo Weiche";"0000";"OFWeiche :21";1;{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 0.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372116"}
|
80;"Omniflo Weiche";"0000";"OFWeiche :21";"H/A";1;"";"";{"Weichentyp": "Doppelweiche", "Richtung": "3", "Weichenwinkel": 0.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372116"}
|
||||||
81;"Omniflo Weiche";"0000";"OFWeiche :3";1;{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372200"}
|
81;"Omniflo Weiche";"0000";"OFWeiche :3";"I/A";1;"";"";{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372200"}
|
||||||
82;"Omniflo Weiche";"0000";"OFWeiche :4";1;{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372201"}
|
82;"Omniflo Weiche";"0000";"OFWeiche :4";"I/A";1;"";"";{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372201"}
|
||||||
83;"Omniflo Weiche";"0000";"OFWeiche :5";1;{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG090090+834372201"}
|
83;"Omniflo Weiche";"0000";"OFWeiche :5";"I/A";1;"";"";{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG090090+834372201"}
|
||||||
84;"Omniflo Weiche";"0000";"OFWeiche :6";1;{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372201+0_BG090090"}
|
84;"Omniflo Weiche";"0000";"OFWeiche :6";"I/A";1;"";"";{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372201+0_BG090090"}
|
||||||
85;"Omniflo Weiche";"0000";"OFWeiche :7";1;{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG090090+834372201+0_BG090090"}
|
85;"Omniflo Weiche";"0000";"OFWeiche :7";"I/A";1;"";"";{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG090090+834372201+0_BG090090"}
|
||||||
86;"Omniflo Weiche";"0000";"OFWeiche :8";1;{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372203"}
|
86;"Omniflo Weiche";"0000";"OFWeiche :8";"I/A";1;"";"";{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372203"}
|
||||||
87;"Omniflo Weiche";"0000";"OFWeiche :9";1;{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372204"}
|
87;"Omniflo Weiche";"0000";"OFWeiche :9";"I/A";1;"";"";{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372204"}
|
||||||
88;"Omniflo Weiche";"0000";"OFWeiche :10";1;{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG190090+834372204"}
|
88;"Omniflo Weiche";"0000";"OFWeiche :10";"I/A";1;"";"";{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG190090+834372204"}
|
||||||
89;"Omniflo Weiche";"0000";"OFWeiche :11";1;{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372204+0_BG190090"}
|
89;"Omniflo Weiche";"0000";"OFWeiche :11";"I/A";1;"";"";{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372204+0_BG190090"}
|
||||||
90;"Omniflo Weiche";"0000";"OFWeiche :12";1;{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG190090+834372204+0_BG190090"}
|
90;"Omniflo Weiche";"0000";"OFWeiche :12";"I/A";1;"";"";{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 45.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG190090+834372204+0_BG190090"}
|
||||||
91;"Omniflo Weiche";"0000";"OFWeiche :13";1;{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372206"}
|
91;"Omniflo Weiche";"0000";"OFWeiche :13";"J/A";1;"";"";{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372206"}
|
||||||
92;"Omniflo Weiche";"0000";"OFWeiche :14";1;{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372207"}
|
92;"Omniflo Weiche";"0000";"OFWeiche :14";"J/A";1;"";"";{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372207"}
|
||||||
93;"Omniflo Weiche";"0000";"OFWeiche :15";1;{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372209"}
|
93;"Omniflo Weiche";"0000";"OFWeiche :15";"J/A";1;"";"";{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372209"}
|
||||||
94;"Omniflo Weiche";"0000";"OFWeiche :16";1;{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372210"}
|
94;"Omniflo Weiche";"0000";"OFWeiche :16";"J/A";1;"";"";{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372210"}
|
||||||
95;"Omniflo Weiche";"0000";"OFWeiche :17";1;{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG080090+834372210"}
|
95;"Omniflo Weiche";"0000";"OFWeiche :17";"J/A";1;"";"";{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG080090+834372210"}
|
||||||
96;"Omniflo Weiche";"0000";"OFWeiche :18";1;{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372210+0_BG080090"}
|
96;"Omniflo Weiche";"0000";"OFWeiche :18";"J/A";1;"";"";{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372210+0_BG080090"}
|
||||||
97;"Omniflo Weiche";"0000";"OFWeiche :19";1;{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG080090+834372210+0_BG080090"}
|
97;"Omniflo Weiche";"0000";"OFWeiche :19";"J/A";1;"";"";{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG080090+834372210+0_BG080090"}
|
||||||
98;"Omniflo Weiche";"0000";"OFWeiche :20";1;{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 0.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372215"}
|
98;"Omniflo Weiche";"0000";"OFWeiche :20";"J/A";1;"";"";{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 0.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372215"}
|
||||||
99;"Omniflo Weiche";"0000";"OFWeiche :21";1;{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 0.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372216"}
|
99;"Omniflo Weiche";"0000";"OFWeiche :21";"J/A";1;"";"";{"Weichentyp": "Dreiwegeweiche", "Richtung": "7", "Weichenwinkel": 0.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372216"}
|
||||||
100;"Omniflo Weiche";"0000";"OFWeiche :1";1;{"Weichentyp": "Dreifachweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372400"}
|
100;"Omniflo Weiche";"0000";"OFWeiche :1";"J/A";1;"";"";{"Weichentyp": "Dreifachweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372400"}
|
||||||
101;"Omniflo Weiche";"0000";"OFWeiche :2";1;{"Weichentyp": "Dreifachweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372403"}
|
101;"Omniflo Weiche";"0000";"OFWeiche :2";"K/A";1;"";"";{"Weichentyp": "Dreifachweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372403"}
|
||||||
102;"Omniflo Weiche";"0000";"OFWeiche :3";1;{"Weichentyp": "Dreifachweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372404"}
|
102;"Omniflo Weiche";"0000";"OFWeiche :3";"K/A";1;"";"";{"Weichentyp": "Dreifachweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372404"}
|
||||||
103;"Omniflo Weiche";"0000";"OFWeiche :4";1;{"Weichentyp": "Dreifachweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG071090+834372404+0_BG071090"}
|
103;"Omniflo Weiche";"0000";"OFWeiche :4";"K/A";1;"";"";{"Weichentyp": "Dreifachweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG071090+834372404+0_BG071090"}
|
||||||
104;"Omniflo Weiche";"0000";"OFWeiche :5";1;{"Weichentyp": "Dreifachweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG071090+834372404"}
|
104;"Omniflo Weiche";"0000";"OFWeiche :5";"K/A";1;"";"";{"Weichentyp": "Dreifachweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "0_BG071090+834372404"}
|
||||||
105;"Omniflo Weiche";"0000";"OFWeiche :6";1;{"Weichentyp": "Dreifachweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372404+0_BG071090"}
|
105;"Omniflo Weiche";"0000";"OFWeiche :6";"K/A";1;"";"";{"Weichentyp": "Dreifachweiche", "Richtung": "3", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": true, "SivasNummer": "834372404+0_BG071090"}
|
||||||
106;"Omniflo Weiche";"0000";"OFWeiche :1";1;{"Weichentyp": "Deltaweiche", "Richtung": "7", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372401"}
|
106;"Omniflo Weiche";"0000";"OFWeiche :1";"K/A";1;"";"";{"Weichentyp": "Deltaweiche", "Richtung": "7", "Weichenwinkel": 90.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372401"}
|
||||||
107;"Omniflo Weiche";"0000";"OFWeiche :1";1;{"Weichentyp": "Sternweiche", "Richtung": "3", "Weichenwinkel": 0.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372420"}
|
107;"Omniflo Weiche";"0000";"OFWeiche :1";"K/A";1;"";"";{"Weichentyp": "Sternweiche", "Richtung": "3", "Weichenwinkel": 0.0, "Höhe": "2000", "Drehung": 0.0, "Antrieb Kurve": false, "SivasNummer": "834372420"}
|
||||||
108;"Omniflo Sum";"autogenerated_of_json";"Omniflo sum";1;{"Anzahl Bögen": 27, "Anzahl Weichengrundkörper": 0, "Anzahl Einwegweichen": 30, "Anzahl Deltaweichen": 7, "Anzahl Doppelweichen und Dreiwegeweichen": 42, "Anzahl Sternweichen": 1, "Gesamtlänge AP110": 0.0, "Gesamtlänge AP60": 0.0}
|
108;"Omniflo Sum";"autogenerated_of_json";"Omniflo sum";"";1;"";"";{"Anzahl Bögen": 27, "Anzahl Weichengrundkörper": 0, "Anzahl Einwegweichen": 30, "Anzahl Deltaweichen": 7, "Anzahl Doppelweichen und Dreiwegeweichen": 42, "Anzahl Sternweichen": 1, "Gesamtlänge AP110": 0.0, "Gesamtlänge AP60": 0.0}
|
||||||
|
Can't render this file because it contains an unexpected character in line 2 and column 42.
|
@@ -202,8 +202,8 @@ class TestFoerdererExportCSV:
|
|||||||
|
|
||||||
def test_header_felder(self):
|
def test_header_felder(self):
|
||||||
"""CSV-Header muss korrekte Spaltenbezeichnungen haben."""
|
"""CSV-Header muss korrekte Spaltenbezeichnungen haben."""
|
||||||
expected = ["Elementnummer", "TeileArt", "TeileId",
|
expected = ["Elementnummer", "TeileArt", "TeileId", "Bezeichnung",
|
||||||
"Bezeichnung", "Anzahl", "Merkmale"]
|
"Planquadrat", "Anzahl", "Position", "Boundingbox", "Merkmale"]
|
||||||
for i, name in enumerate(expected):
|
for i, name in enumerate(expected):
|
||||||
assert self.header[i] == name, (
|
assert self.header[i] == name, (
|
||||||
f"Header[{i}]: erwartet '{name}', ist '{self.header[i]}'"
|
f"Header[{i}]: erwartet '{name}', ist '{self.header[i]}'"
|
||||||
@@ -226,19 +226,19 @@ class TestFoerdererExportCSV:
|
|||||||
def test_anzahl_spalte_ist_eins(self):
|
def test_anzahl_spalte_ist_eins(self):
|
||||||
"""Anzahl-Spalte muss fuer alle Zeilen '1' sein."""
|
"""Anzahl-Spalte muss fuer alle Zeilen '1' sein."""
|
||||||
for i, row in enumerate(self.rows):
|
for i, row in enumerate(self.rows):
|
||||||
if len(row) < 5:
|
if len(row) < 6:
|
||||||
continue
|
continue
|
||||||
assert row[4] == "1", (
|
assert row[5] == "1", (
|
||||||
f"Zeile {i + 2}: Anzahl={row[4]}, erwartet 1"
|
f"Zeile {i + 2}: Anzahl={row[5]}, erwartet 1"
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_merkmale_sind_valides_json(self):
|
def test_merkmale_sind_valides_json(self):
|
||||||
"""Merkmale-Spalte muss valides JSON enthalten."""
|
"""Merkmale-Spalte muss valides JSON enthalten."""
|
||||||
for i, row in enumerate(self.rows):
|
for i, row in enumerate(self.rows):
|
||||||
if len(row) < 6:
|
if len(row) < 9:
|
||||||
continue
|
continue
|
||||||
try:
|
try:
|
||||||
json.loads(row[5])
|
json.loads(row[8])
|
||||||
except json.JSONDecodeError as e:
|
except json.JSONDecodeError as e:
|
||||||
pytest.fail(f"Zeile {i + 2}: Merkmale ist kein valides JSON: {e}")
|
pytest.fail(f"Zeile {i + 2}: Merkmale ist kein valides JSON: {e}")
|
||||||
|
|
||||||
@@ -247,9 +247,9 @@ class TestFoerdererExportCSV:
|
|||||||
required = {"Typ", "Winkel", "DeltaH_mm", "DeltaL_mm",
|
required = {"Typ", "Winkel", "DeltaH_mm", "DeltaL_mm",
|
||||||
"L_VF_m", "Hoehe_Von_mm", "Hoehe_Bis_mm"}
|
"L_VF_m", "Hoehe_Von_mm", "Hoehe_Bis_mm"}
|
||||||
for i, row in enumerate(self.rows):
|
for i, row in enumerate(self.rows):
|
||||||
if len(row) < 6:
|
if len(row) < 9:
|
||||||
continue
|
continue
|
||||||
merkmale = json.loads(row[5])
|
merkmale = json.loads(row[8])
|
||||||
missing = required - set(merkmale.keys())
|
missing = required - set(merkmale.keys())
|
||||||
assert not missing, (
|
assert not missing, (
|
||||||
f"Zeile {i + 2}: Fehlende Merkmale-Felder: {missing}"
|
f"Zeile {i + 2}: Fehlende Merkmale-Felder: {missing}"
|
||||||
|
|||||||
@@ -107,7 +107,7 @@ class TestOmnifloExportUnit:
|
|||||||
out_dir = _output_dir()
|
out_dir = _output_dir()
|
||||||
os.makedirs(out_dir, exist_ok=True)
|
os.makedirs(out_dir, exist_ok=True)
|
||||||
csv_path = os.path.join(out_dir, "omniflo_export.csv")
|
csv_path = os.path.join(out_dir, "omniflo_export.csv")
|
||||||
header = "Elementnummer;TeileArt;TeileId;Bezeichnung;Anzahl;Merkmale"
|
header = "Elementnummer;TeileArt;TeileId;Bezeichnung;Planquadrat;Anzahl;Position;Boundingbox;Merkmale"
|
||||||
with open(csv_path, "w", encoding="utf-8") as f:
|
with open(csv_path, "w", encoding="utf-8") as f:
|
||||||
f.write(header + "\n")
|
f.write(header + "\n")
|
||||||
for item in self.items:
|
for item in self.items:
|
||||||
@@ -333,7 +333,7 @@ def _reference_dir():
|
|||||||
|
|
||||||
def _normalize_row(line):
|
def _normalize_row(line):
|
||||||
"""Splittet eine CSV-Zeile und ersetzt die TeileId (UUID) durch Platzhalter."""
|
"""Splittet eine CSV-Zeile und ersetzt die TeileId (UUID) durch Platzhalter."""
|
||||||
cols = line.strip().split(";", 5)
|
cols = line.strip().split(";", 8)
|
||||||
if len(cols) >= 3:
|
if len(cols) >= 3:
|
||||||
cols[2] = "<ID>"
|
cols[2] = "<ID>"
|
||||||
return cols
|
return cols
|
||||||
|
|||||||
Reference in new issue
Block a user