Update der Attribute Höhe und Drehung vor Aufruf der Exports durchgeführt
This commit is contained in:
@@ -108,6 +108,31 @@
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
;; --- HOEHE/DREHUNG aller Omniflo-Elemente still aktualisieren ---
|
||||||
|
;; Wird automatisch vor jedem Export aufgerufen.
|
||||||
|
(defun omni:update-all-attribs ( / ss i ename ed bname teileart)
|
||||||
|
(setq ss (ssget "X" (list (cons 0 "INSERT"))))
|
||||||
|
(if ss
|
||||||
|
(progn
|
||||||
|
(setq i 0)
|
||||||
|
(while (setq ename (ssname ss i))
|
||||||
|
(setq ed (entget ename))
|
||||||
|
(setq bname (cdr (assoc 2 ed)))
|
||||||
|
(setq teileart (csv:get-attrib ename "TEILEART"))
|
||||||
|
(if (or teileart
|
||||||
|
(wcmatch (strcase bname) "AP110*,AP_110*"))
|
||||||
|
(progn
|
||||||
|
(omni:set-hoehe-attrib ename)
|
||||||
|
(omni:set-drehung-attrib ename)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(setq i (1+ i))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
;; --- Gemeinsame Export-Funktion ---
|
;; --- Gemeinsame Export-Funktion ---
|
||||||
;; Sammelt relevante Bloecke, schreibt JSON, ruft Python auf.
|
;; Sammelt relevante Bloecke, schreibt JSON, ruft Python auf.
|
||||||
;; label = Anzeigename (z.B. "EXPORTCSV")
|
;; label = Anzeigename (z.B. "EXPORTCSV")
|
||||||
@@ -115,6 +140,9 @@
|
|||||||
;; 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
|
(defun csv:run-export (label py-name csv-name / ss i ename fh out-pfad
|
||||||
py-skript ergebnis-pfad cmd first-block count)
|
py-skript ergebnis-pfad cmd first-block count)
|
||||||
|
;; Vor dem Export HOEHE/DREHUNG aller Omniflo-Elemente aktualisieren
|
||||||
|
(princ (strcat "\n[" label "] Aktualisiere Hoehe/Drehung..."))
|
||||||
|
(omni:update-all-attribs)
|
||||||
(princ (strcat "\n[" label "] Sammle relevante Bloecke..."))
|
(princ (strcat "\n[" label "] Sammle relevante Bloecke..."))
|
||||||
|
|
||||||
(setq ss (csv:collect-export-blocks))
|
(setq ss (csv:collect-export-blocks))
|
||||||
@@ -338,6 +366,9 @@
|
|||||||
len-ap110 len-ap60 laenge-str
|
len-ap110 len-ap60 laenge-str
|
||||||
fh out-pfad lines subtyp merkmale)
|
fh out-pfad lines subtyp merkmale)
|
||||||
|
|
||||||
|
;; Vor dem Export HOEHE/DREHUNG aller Omniflo-Elemente aktualisieren
|
||||||
|
(princ "\n[OMNI_EXPORT] Aktualisiere Hoehe/Drehung...")
|
||||||
|
(omni:update-all-attribs)
|
||||||
(princ "\n[OMNI_EXPORT] Sammle Omniflo-Elemente...")
|
(princ "\n[OMNI_EXPORT] Sammle Omniflo-Elemente...")
|
||||||
(setq ss-all (ssget "X" (list (cons 0 "INSERT"))))
|
(setq ss-all (ssget "X" (list (cons 0 "INSERT"))))
|
||||||
(if (null ss-all)
|
(if (null ss-all)
|
||||||
|
|||||||
@@ -26,6 +26,7 @@
|
|||||||
;; KreiselInsert.lsp entfernt - ersetzt durch Python/PyRx (lib/elemente/kreisel.py, eckrad.py)
|
;; KreiselInsert.lsp entfernt - ersetzt durch Python/PyRx (lib/elemente/kreisel.py, eckrad.py)
|
||||||
(load (strcat base-path "VarioFoerderer.lsp") "VarioFoerderer.lsp nicht gefunden")
|
(load (strcat base-path "VarioFoerderer.lsp") "VarioFoerderer.lsp nicht gefunden")
|
||||||
(load (strcat base-path "Gefaellestrecke.lsp") "Gefaellestrecke.lsp nicht gefunden")
|
(load (strcat base-path "Gefaellestrecke.lsp") "Gefaellestrecke.lsp nicht gefunden")
|
||||||
|
(load (strcat base-path "export.lsp") "export.lsp nicht gefunden")
|
||||||
(load (strcat base-path "tests.lsp") "tests.lsp nicht gefunden")
|
(load (strcat base-path "tests.lsp") "tests.lsp nicht gefunden")
|
||||||
;; OmniModulInsert.lsp entfernt - ersetzt durch Python/PyRx (lib/elemente/omniflo*.py)
|
;; OmniModulInsert.lsp entfernt - ersetzt durch Python/PyRx (lib/elemente/omniflo*.py)
|
||||||
(load (strcat base-path "SSG_LIB_Commands.lsp") "SSG_LIB_Commands.lsp nicht gefunden")
|
(load (strcat base-path "SSG_LIB_Commands.lsp") "SSG_LIB_Commands.lsp nicht gefunden")
|
||||||
|
|||||||
+22
-8
@@ -43,13 +43,30 @@ def generate_shape_id():
|
|||||||
# Merkmale-Builder
|
# Merkmale-Builder
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
def get_hoehe(block):
|
||||||
|
"""Liest HOEHE aus Block-Attributen. Fallback: Z-Koordinate."""
|
||||||
|
attribs = block.get("attribs", {})
|
||||||
|
return attribs.get("HOEHE") or str(int(block.get("z", 0) or 0)) or "2000"
|
||||||
|
|
||||||
|
|
||||||
|
def get_drehung(block):
|
||||||
|
"""Liest DREHUNG aus Block-Attributen. Fallback: CAD-Rotation."""
|
||||||
|
attribs = block.get("attribs", {})
|
||||||
|
drehung_raw = attribs.get("DREHUNG")
|
||||||
|
if drehung_raw is not None:
|
||||||
|
try:
|
||||||
|
return float(drehung_raw)
|
||||||
|
except (ValueError, TypeError):
|
||||||
|
pass
|
||||||
|
return block.get("rotation", 0.0)
|
||||||
|
|
||||||
|
|
||||||
def build_bogen_merkmale(block, eintrag):
|
def build_bogen_merkmale(block, eintrag):
|
||||||
return {
|
return {
|
||||||
"Länge in Meter": "0",
|
|
||||||
"Kurvenwinkel": eintrag.get("KurvenWinkel", 0),
|
"Kurvenwinkel": eintrag.get("KurvenWinkel", 0),
|
||||||
"Radius": eintrag.get("Radius", 0),
|
"Radius": eintrag.get("Radius", 0),
|
||||||
"Höhe": "2000",
|
"Höhe": get_hoehe(block),
|
||||||
"Drehung": block.get("rotation", 0.0),
|
"Drehung": get_drehung(block),
|
||||||
"SivasNummer": str(eintrag.get("Sivasnr", ""))
|
"SivasNummer": str(eintrag.get("Sivasnr", ""))
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -57,14 +74,11 @@ def build_bogen_merkmale(block, eintrag):
|
|||||||
def build_weiche_merkmale(block, eintrag):
|
def build_weiche_merkmale(block, eintrag):
|
||||||
wt = eintrag.get("WeichenTyp", "Einzelweiche")
|
wt = eintrag.get("WeichenTyp", "Einzelweiche")
|
||||||
return {
|
return {
|
||||||
"Länge in Meter links": 0,
|
|
||||||
"Länge in Meter rechts": 0,
|
|
||||||
"Länge in Meter gerade": 0,
|
|
||||||
"Weichentyp": wt,
|
"Weichentyp": wt,
|
||||||
"Richtung": str(eintrag.get("KurvenRichtung", "")),
|
"Richtung": str(eintrag.get("KurvenRichtung", "")),
|
||||||
"Weichenwinkel": eintrag.get("KurvenWinkel", 0),
|
"Weichenwinkel": eintrag.get("KurvenWinkel", 0),
|
||||||
"Höhe": "2000",
|
"Höhe": get_hoehe(block),
|
||||||
"Drehung": block.get("rotation", 0.0),
|
"Drehung": get_drehung(block),
|
||||||
"Antrieb Kurve": eintrag.get("SivasnrTEF") is not None,
|
"Antrieb Kurve": eintrag.get("SivasnrTEF") is not None,
|
||||||
"SivasNummer": str(eintrag.get("Sivasnr", ""))
|
"SivasNummer": str(eintrag.get("Sivasnr", ""))
|
||||||
}
|
}
|
||||||
|
|||||||
+22
-8
@@ -60,14 +60,31 @@ def classify_weiche(eintrag):
|
|||||||
return "einzelweiche"
|
return "einzelweiche"
|
||||||
|
|
||||||
|
|
||||||
|
def get_hoehe(block):
|
||||||
|
"""Liest HOEHE aus Block-Attributen. Fallback: Z-Koordinate."""
|
||||||
|
attribs = block.get("attribs", {})
|
||||||
|
return attribs.get("HOEHE") or str(int(block.get("z", 0) or 0)) or "2000"
|
||||||
|
|
||||||
|
|
||||||
|
def get_drehung(block):
|
||||||
|
"""Liest DREHUNG aus Block-Attributen. Fallback: CAD-Rotation."""
|
||||||
|
attribs = block.get("attribs", {})
|
||||||
|
drehung_raw = attribs.get("DREHUNG")
|
||||||
|
if drehung_raw is not None:
|
||||||
|
try:
|
||||||
|
return float(drehung_raw)
|
||||||
|
except (ValueError, TypeError):
|
||||||
|
pass
|
||||||
|
return block.get("rotation", 0.0)
|
||||||
|
|
||||||
|
|
||||||
def build_bogen_merkmale(block, eintrag):
|
def build_bogen_merkmale(block, eintrag):
|
||||||
"""Merkmale-JSON fuer einen Omniflo Bogen."""
|
"""Merkmale-JSON fuer einen Omniflo Bogen."""
|
||||||
return {
|
return {
|
||||||
"Länge in Meter": "0",
|
|
||||||
"Kurvenwinkel": eintrag.get("KurvenWinkel", 0),
|
"Kurvenwinkel": eintrag.get("KurvenWinkel", 0),
|
||||||
"Radius": eintrag.get("Radius", 0),
|
"Radius": eintrag.get("Radius", 0),
|
||||||
"Höhe": "2000",
|
"Höhe": get_hoehe(block),
|
||||||
"Drehung": block.get("rotation", 0.0),
|
"Drehung": get_drehung(block),
|
||||||
"SivasNummer": str(eintrag.get("Sivasnr", ""))
|
"SivasNummer": str(eintrag.get("Sivasnr", ""))
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -76,14 +93,11 @@ def build_weiche_merkmale(block, eintrag):
|
|||||||
"""Merkmale-JSON fuer eine Omniflo Weiche."""
|
"""Merkmale-JSON fuer eine Omniflo Weiche."""
|
||||||
wt = eintrag.get("WeichenTyp", "Einzelweiche")
|
wt = eintrag.get("WeichenTyp", "Einzelweiche")
|
||||||
return {
|
return {
|
||||||
"Länge in Meter links": 0,
|
|
||||||
"Länge in Meter rechts": 0,
|
|
||||||
"Länge in Meter gerade": 0,
|
|
||||||
"Weichentyp": wt,
|
"Weichentyp": wt,
|
||||||
"Richtung": str(eintrag.get("KurvenRichtung", "")),
|
"Richtung": str(eintrag.get("KurvenRichtung", "")),
|
||||||
"Weichenwinkel": eintrag.get("KurvenWinkel", 0),
|
"Weichenwinkel": eintrag.get("KurvenWinkel", 0),
|
||||||
"Höhe": "2000",
|
"Höhe": get_hoehe(block),
|
||||||
"Drehung": block.get("rotation", 0.0),
|
"Drehung": get_drehung(block),
|
||||||
"Antrieb Kurve": eintrag.get("SivasnrTEF") is not None,
|
"Antrieb Kurve": eintrag.get("SivasnrTEF") is not None,
|
||||||
"SivasNummer": str(eintrag.get("Sivasnr", ""))
|
"SivasNummer": str(eintrag.get("Sivasnr", ""))
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-3
@@ -63,9 +63,9 @@
|
|||||||
[Doppel Parallel 200/750 M]^C^COMNI_WP_Doppel
|
[Doppel Parallel 200/750 M]^C^COMNI_WP_Doppel
|
||||||
[<-Dreiwege Parallel 200/750 M]^C^COMNI_WP_Dreiwege
|
[<-Dreiwege Parallel 200/750 M]^C^COMNI_WP_Dreiwege
|
||||||
[->Weichenkoerper]
|
[->Weichenkoerper]
|
||||||
[Weichenkoerper Einfach 22.5 links M]^C^COMNI_WK_Einfach
|
[Einfach 22.5 links M]^C^COMNI_WK_Einfach
|
||||||
[Weichenkoerper Doppel 22.5 M]^C^COMNI_WK_Doppel
|
[Doppel 22.5 M]^C^COMNI_WK_Doppel
|
||||||
[<-Weichenkoerper Dreiwege 22.5 M]^C^COMNI_WK_Dreiwege
|
[<-Dreiwege 22.5 M]^C^COMNI_WK_Dreiwege
|
||||||
[->Weichenkombinationen]
|
[->Weichenkombinationen]
|
||||||
[Delta 1400/700 M]^C^COMNI_WKomb_Delta
|
[Delta 1400/700 M]^C^COMNI_WKomb_Delta
|
||||||
[<-Star 1400/1400 M]^C^COMNI_WKomb_Star
|
[<-Star 1400/1400 M]^C^COMNI_WKomb_Star
|
||||||
|
|||||||
Reference in New Issue
Block a user