[ADD] Omniflo: Untermenue Weichenbatterien (OMNI_WB_*, 16 DWGs aus data/omniflo/2D), im Weichen-Katalog als WeichenTyp Weichenbatterie
[CHANGE] Omniflo-Edit: angeklicktes Bauteil im Dialog vorgewaehlt, Filterwechsel Richtung/Schaltung waehlt das Gegenstueck
This commit is contained in:
1 parent
4a5a3da88a
commit
34202cf305
23 files changed
+1088
-483
No files matched your search
@@ -78,7 +78,7 @@ Die `start_briscad.bat` ruft `setenv.bat` auf und startet BricsCAD.
|
||||
| VarioFoerderer | `VarioFoerderer` | FOERDERANLAGE, VARIOFOERDERER_EDIT, Vario_Kette_Merge |
|
||||
| Gefaellestrecke | `Gefaellestrecke` | GEFAELLESTRECKE, GEFAELLESTRECKE_EDIT |
|
||||
| Kettenfoerderer | `KettenFoerderer` | KETTENFOERDERER (Menue: Omniflo -> KettenFoerderer), KF_EDIT (Doppelklick auf KF_n). KF_KS_PRUEFEN ist ein reiner Diagnosebefehl und bewusst NICHT im Menue |
|
||||
| Omniflo (komplett) | `OmniModulInsert` + `GeruestInsert` | OMNI_APB_*, OMNI_W*_*, OMNI_TEF_*, OMNI_TV_*, OMNI_LADESCHLEIFE_*, OMNI_EDIT; OMNI_FAHRSTRECKE / OMNI_FAHRSTRECKE_BESCHRIFTEN (GeruestInsert, Linien-Logik wie GERUEST_TRAEGER) |
|
||||
| Omniflo (komplett) | `OmniModulInsert` + `GeruestInsert` | OMNI_APB_*, OMNI_W*_*, OMNI_WB_* (Untermenue Weichenbatterien), OMNI_TEF_*, OMNI_TV_*, OMNI_LADESCHLEIFE_*, OMNI_EDIT; OMNI_FAHRSTRECKE / OMNI_FAHRSTRECKE_BESCHRIFTEN (GeruestInsert, Linien-Logik wie GERUEST_TRAEGER) |
|
||||
| Geruest | `GeruestInsert` | GERUEST_SAEULEN, GERUEST_ROHRABHAENGER, GERUEST_WANDBEFESTIGUNG (je eigener Dialog aus der Vorlage geruest.dcl, keine Umschaltung), GERUEST_TRAEGER (eigener Dialog), GERUEST_TRAEGER_BESCHRIFTEN (Untermenue Geruest -> Funktionen -> Traeger beschriften; alle Traeger der Zeichnung neu beschriften); Gattertraeger noch Platzhalter auf GERUEST (zeigt nur einen Hinweis) |
|
||||
| Connections | `Connection_Edit` + `SSG_LIB_Commands` | CONNECTION_INSERT, CONNECTION_EDIT, ILS_EINGANG_INSERT, ILS_AUSGANG_INSERT |
|
||||
| HW Planung | `HwPlanung` | HW_MATERIALFLUSS (Materialfluss erzeugen), HW_SYMBOLE (Symbole erzeugen, noch Platzhalter) |
|
||||
@@ -116,7 +116,7 @@ Detaillierte Dokumentation aller Funktionen und Befehle: siehe `Lisp/README.md`.
|
||||
| `vf_spec.lsp` (von vf_core.lsp NACH vf_linienzug.lsp geladen) | VF_SPEC_BAU | Linienzug-Ketten aus **Eingabedaten** bauen, ohne Dialog und ohne Konsolenfrage (Stufe 1 aus `doc/todo/plan-vf-interactive.md`). Eine **Spec** beschreibt eine Kette in Domaenenwerten (`"links"`, `"winkel"`, `"aussen"`, ja/nein) statt in Menue-Codes; `vsp-journal` uebersetzt sie in ein Eingabe-Journal, `vsp-bau-aus-spec` spielt es per `vfl-journal-replay-start` durch den UNVERAENDERTEN `vf-linienzug-modus` (Replay-Kern `vsp-bau-journal` - nimmt auch ein unveraendert uebernommenes, aufgezeichnetes Journal, z.B. aus `dxf_anlage_export.py`). Damit traegt der fertige Block dasselbe `SSG_VF_EDIT`-Journal wie eine handgebaute Kette und bleibt per Doppelklick editier- und 2D/3D-konvertierbar - kein Journal-Konsument muss etwas von Specs wissen. Wichtige Regeln, die der Uebersetzer kennt: der Menue-Code haengt am Frame (erste Sektion 4 Optionen ohne GF-Bogen, danach 5), `hz` steht nur beim ERSTEN Segment im Journal, und `erst-hor` unterscheidet den horizontalen Erstkoerper einer VF-Einheit (Separator-/Endpunktfragen vorab) vom gewinkelten (keine Frage). Fehlerverhalten: fail fast - `vsp-pruefen` sammelt ALLE Spec-Fehler, gebaut wird dann nichts (nichts wird geraten). Ergebnis-Record je Kette mit `status` (`executed`/`warnung`/`desync`/`abbruch`/`spec-fehler`), Block/Handle/Einfuegepunkt/Attributen, `prompts` (muss 0 sein), `glieder_soll` vs. `glieder_ist` (Desync-Detektor, der auch bei aufgehender Queue greift) und den gesammelten `meldungen`. Headless-Rahmen `vsp-headless-an`/`-aus` (Save/Restore von `*vfl-headless*`, `*vfl-wizard-mode*`, `*ssg-gui-aus*` + zaehlende Eingabe-Stubs). Spec-Datei flach als JSON (`ssg-load-json` liest zeilenweise), erzeugt von `lib/vf_spec_export.py`. Gegenstueck/Referenz in Python: derselbe Emitter, gegen die 5 echten HundM-Ketten rundlaufgeprueft |
|
||||
| `Gefaellestrecke.lsp` | GEFAELLESTRECKE, GEFAELLESTRECKE_EDIT | Gefaelle-Foerderanlage (AUS -> Staustrecke skaliert -> Separator -> EIN); Modus 1 per DCL-Dialog (Einfuegehoehe, Element-Winkel 30/90); Doppelklick auf GF_n-Block ruft GEFAELLESTRECKE_EDIT (Dialog vorbelegt, Neuaufbau; die Einfuegehoehe kommt aus der aktuellen Z des Einfuegepunkts statt aus XDATA/HOEHE_VON_mm, damit ein in Z verschobener Block per OK direkt auf der neuen Hoehe neu entsteht - gleiches gilt fuer die 2D/3D-Umschaltung `gf-konvertiere-ent`; der GF-Linienzug-Rebuild nutzt weiter die absoluten Segmentpunkte aus XDATA) |
|
||||
| `export.lsp` | EXPORTSIVAS, EXPORTCSV, OMNI_UPDATE_ATTRIBS, CSV_EXPORT_KONFIG | JSON-Sammlung und Python-Export (Omniflo-Merkmale/Sum-Zeile via lib/export_csv.py). **Gefrorene Layer**: `csv:collect-export-blocks` laesst Bloecke auf gefrorenen Layern aus (ausgeschaltete Layer zaehlen NICHT), Schalter `*csv-gefrorene-ausschliessen*` (Standard an, Toggle im Dialog CSV_EXPORT_KONFIG). Die Hilfsobjekte eines gefrorenen VF_n/GF_n (Separator-/Element-Kopien, Einheiten-/AS-ES-Marker) liegen auf eigenen Layern und werden darum ueber `*csv-ausschluss-enames*` mit ausgelassen (gesetzt in `csv:export-vorbereiten` per `csv:hilfskopien-ausschluss`); erzeugt und nummeriert werden sie trotzdem, damit IDs stabil bleiben. DrawPlanquadrate nutzt dieselbe Sammlung und folgt dem Filter. **Hoehen-Neuberechnung**: erster Schritt von `csv:export-vorbereiten` ist `csv:hoehen-aktualisieren` - in Z verschobene `KREISEL_*`/`ECKRAD_*`/`VF_*`/`GF_*` bekommen ihre Hoehen-Attribute aus der Einfuege-Z neu (reiner Kern `csv:hoehen-werte`, getestet; Formeln/Rundung wie beim Bau: Kreisel HOEHE + MONTAGEHOEHE_m=z/1000, Eckrad HOEHE, GF/VF HOEHE_VON_mm=(fix z), MONTAGEHOEHE_m GF=z/1000 bzw. VF=(VON+BIS)/2000). HOEHE_BIS_mm = VON - (VON_alt - BIS_alt), bewusst NICHT z - DELTA_H_mm (ohne Vorzeichen -> steigende VF falsch, separat abgeschnitten -> 1 mm Abweichung); DELTA_H_mm nur Rueckfall. Nicht verschobene Bloecke (Attribut passt zu z) bleiben unangetastet, damit Bau-Werte und Hand-Korrekturen (z.B. Buehnen-Abzug aus HOEHEN_CHECK) bit-genau erhalten bleiben |
|
||||
| `OmniModulInsert.lsp` | OMNI_LOAD, OMNI_APB_*, OMNI_W*_*, OMNI_TEF_*, OMNI_TV_*, OMNI_APBW_*, OMNI_LADESCHLEIFE_AP110, OMNI_EDIT | Omniflo-Komponenten: Boegen, Weichen, Verbinder (`OMNI_TV_*`: DWGs dimensionsunabhaengig in `data/omniflo/Verbinder`, `omni:insert-verbinder` -> gemeinsamer Einfuegekern `omni:insert-datei`, den auch `omni:insert-dxf` nutzt; im Export ueber `pattern_verbinder` = `VB_*, TV_*` gesammelt (`csv:collect-export-blocks`, `ssg-id-collect-blocks`), Sivas-Zeilen ueber TEILEART/ARTINR wie alle Omniflo-Teile), Transferwagen, Ladeschleifen (`data/json/omniflo_ladeschleifen.json`, per `ssg-json-laden`, da die Beschreibungen Kommas enthalten; Blockdatei darf `.dwg` statt `.dxf` sein), Edit-Dialog |
|
||||
| `OmniModulInsert.lsp` | OMNI_LOAD, OMNI_APB_*, OMNI_W*_*, OMNI_TEF_*, OMNI_TV_*, OMNI_APBW_*, OMNI_WB_*, OMNI_LADESCHLEIFE_AP110, OMNI_EDIT | Omniflo-Komponenten: Boegen, Weichen, Weichenbatterien (`OMNI_WB_<ARTINR>`: DWG aus `data/omniflo/2D`, Menuetexte/Nummern aus `data/omniflo/weichenbatterien_artinr_quelle.dxf`; im Katalog `omniflo_weichen.json` als `WeichenTyp` "Weichenbatterie" ohne Winkel/Breite/Laenge, damit der Doppelklick den Weichen-Dialog mit Richtung/Schaltung oeffnet), Verbinder (`OMNI_TV_*`: DWGs dimensionsunabhaengig in `data/omniflo/Verbinder`, `omni:insert-verbinder` -> gemeinsamer Einfuegekern `omni:insert-datei`, den auch `omni:insert-dxf` nutzt; im Export ueber `pattern_verbinder` = `VB_*, TV_*` gesammelt (`csv:collect-export-blocks`, `ssg-id-collect-blocks`), Sivas-Zeilen ueber TEILEART/ARTINR wie alle Omniflo-Teile), Transferwagen, Ladeschleifen (`data/json/omniflo_ladeschleifen.json`, per `ssg-json-laden`, da die Beschreibungen Kommas enthalten; Blockdatei darf `.dwg` statt `.dxf` sein), Edit-Dialog (OMNI_EDIT waehlt das bearbeitete Bauteil im Dropdown vor - globale `*omni-dlg-vorwahl*` statt neuer Dialog-Parameter; im Weichen-Dialog stehen Schaltung/Richtung auf seinen Werten, ein Filterwechsel waehlt das Gegenstueck mit dem aehnlichsten ProfilTyp, reine Kerne `omni:profil-aehnlichkeit`/`omni:vorwahl-index` getestet) |
|
||||
| `SSG_LIB_Commands.lsp` | ILS_BTMT_Beladung, ILS_BTMT_Entladung, ILS_SCANNER_INSERT, ILS_SEPARATOR_INSERT, ILS_EINGANG_INSERT, ILS_AUSGANG_INSERT, SSG_BLOCKEDIT, SSG_DIM_SWITCH, SSG_SPRACHE | BTMT Be-/Entladung (`ils-insert-station`: wiederholtes Einfuegen von `BTMT-Beladung` bzw. `SC_Entladung`, Drehung interaktiv, Layer aus `LAYER`-Attribut, Dimension via `ssg-ils-block-laden`) + Sensoren (`ils-insert-sensor`) + Eingang-/Ausgang-Symbol (frei platzierbar wie BTMT Be-/Entladung, ueber `ils-insert-station` mit den Rohnamen `Eingang`/`Ausgang`, Bloecke `Eingang_<DIM>.dwg`/`Ausgang_<DIM>.dwg` in data/ils) + Doppelklick/Kontextmenue-Dispatcher + Konfiguration (2D/3D, Sprache) |
|
||||
| `Tro_Edit.lsp` | TRO_INSERT, TRO_EDIT | TRO-Marker (Block `TRO_SYM_<Typ>`) fuer sps_skel (lib/tro_annotate.py): TRO_INSERT fuegt eine bestehende Blockdefinition an einem gewaehlten Punkt ein und setzt ID/TYPE (bricht ab, wenn der Typ noch keine Blockdefinition in der Zeichnung hat - die entsteht nur ueber tro_annotate.py); TRO_EDIT aendert ID/TYPE eines bestehenden Markers per Dialog. Typliste aus `tro_types.lsp` (von `tro_annotate.py --emit-lisp` nach DXFM_LISP geschrieben). Der Dispatcher SSG_BLOCKEDIT leitet Blocknamen `TRO_*` zu TRO_EDIT. |
|
||||
| `Connection_Edit.lsp` | CONNECTION_INSERT, CONNECTION_EDIT | Verbindung zwischen zwei TRO-Markern als Block `CONNECTION_ARROW` (Pfeilmitte); Beziehung ueber die INTERNEN IDs der TROs (`FROM_ID`/`TO_ID`, sichtbar `FROM_TRO`/`TO_TRO`, `KIND` flow/colocated), damit Umbenennen/Verschieben die Zuordnung nicht bricht. Dialog `connection_edit.dcl`; SSG_BLOCKEDIT leitet `CONNECTION_*` hierher (vor dem TRO-Zweig) |
|
||||
|
||||
+193
-31
@@ -123,6 +123,66 @@
|
||||
)
|
||||
|
||||
|
||||
;; --- Aehnlichkeit zweier ProfilTyp-Texte ---
|
||||
;; Anzahl gleicher Zeichen an gleicher Position minus Laengendifferenz.
|
||||
;; Gegenstuecke unterscheiden sich im Katalog nur in einzelnen Zeichen
|
||||
;; ("45-L-" / "45-R-", "MIT M" / "MIT P", "L1S" / "R1S"), darum bewertet das
|
||||
;; ohne schemaabhaengiges Zerlegen die passende Weiche am hoechsten.
|
||||
;; Kein String auf einer Seite -> 0.
|
||||
(defun omni:profil-aehnlichkeit (a b / la lb n)
|
||||
(if (and (= (type a) 'STR) (= (type b) 'STR))
|
||||
(progn
|
||||
(setq la (vl-string->list a)
|
||||
lb (vl-string->list b)
|
||||
n 0)
|
||||
(while (and la lb)
|
||||
(if (= (car la) (car lb)) (setq n (1+ n)))
|
||||
(setq la (cdr la) lb (cdr lb))
|
||||
)
|
||||
(- n (abs (- (strlen a) (strlen b))))
|
||||
)
|
||||
0
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
;; --- Vorwahl-Index fuer ein Dialog-Dropdown ---
|
||||
;; ziel = Katalog-Eintrag, der vorgewaehlt werden soll (z.B. das per
|
||||
;; Doppelklick bearbeitete Bauteil oder die bisherige Auswahl)
|
||||
;; liste = aktuell angezeigte Eintraege
|
||||
;; Rueckgabe: Index des Eintrags mit gleicher Sivasnr, sonst des Eintrags mit
|
||||
;; dem aehnlichsten ProfilTyp (Gleichstand: erster); nil ohne Ziel/Liste.
|
||||
(defun omni:vorwahl-index (ziel liste / nr profil i idx best wert)
|
||||
(if (and ziel liste)
|
||||
(progn
|
||||
(setq nr (omni:sivasid-to-str (cdr (assoc "Sivasnr" ziel)))
|
||||
i 0)
|
||||
(if (/= nr "")
|
||||
(foreach e liste
|
||||
(if (and (null idx)
|
||||
(= (omni:sivasid-to-str (cdr (assoc "Sivasnr" e))) nr))
|
||||
(setq idx i))
|
||||
(setq i (1+ i))
|
||||
)
|
||||
)
|
||||
(if (null idx)
|
||||
(progn
|
||||
(setq profil (cdr (assoc "ProfilTyp" ziel))
|
||||
i 0)
|
||||
(foreach e liste
|
||||
(setq wert (omni:profil-aehnlichkeit profil (cdr (assoc "ProfilTyp" e))))
|
||||
(if (or (null best) (> wert best))
|
||||
(setq best wert idx i))
|
||||
(setq i (1+ i))
|
||||
)
|
||||
)
|
||||
)
|
||||
idx
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
;; --- Einzelnen Wert aus einem Eintrag lesen ---
|
||||
;; eintrag = Assoziationsliste (Rueckgabe von omni:get-bogen etc.)
|
||||
;; key = Schluesselname z.B. "Radius"
|
||||
@@ -331,8 +391,9 @@
|
||||
;; profiltyp = optionales Praefix zum Filtern des ProfilTyp-Textes,
|
||||
;; z.B. "APB 60" oder "APB 110" (nil = keine Einschraenkung)
|
||||
;; Rueckgabe: (eintrag hoehe drehung) oder nil bei Abbruch
|
||||
;; Vorwahl: *omni-dlg-vorwahl* (von OMNI_EDIT gesetzt) wird vorgewaehlt.
|
||||
(defun omni:bogen-dialog (winkel init-hoehe init-drehung profiltyp / dcl-pfad dat boegen-liste
|
||||
profil-liste ergebnis dlg-hoehe profil)
|
||||
profil-liste ergebnis dlg-hoehe profil idx)
|
||||
(if (null *OMNI-BOEGEN*) (omni:load-data))
|
||||
|
||||
;; Defaults
|
||||
@@ -387,13 +448,16 @@
|
||||
(start_list "bogenart")
|
||||
(mapcar 'add_list profil-liste)
|
||||
(end_list)
|
||||
(set_tile "bogenart" "0")
|
||||
;; Beim Edit (OMNI_EDIT) das bearbeitete Bauteil vorwaehlen
|
||||
(setq idx (omni:vorwahl-index *omni-dlg-vorwahl* boegen-liste))
|
||||
(if (null idx) (setq idx 0))
|
||||
(set_tile "bogenart" (itoa idx))
|
||||
|
||||
;; Hoehe initialisieren (Drehung erfolgt interaktiv nach dem Einfuegen)
|
||||
(set_tile "val_hoehe" init-hoehe)
|
||||
|
||||
;; Startwerte anzeigen
|
||||
(omni:bogen-dlg-update "0")
|
||||
(omni:bogen-dlg-update (itoa idx))
|
||||
|
||||
;; Callback bei Dropdown-Aenderung
|
||||
(action_tile "bogenart" "(omni:bogen-dlg-update $value)")
|
||||
@@ -522,7 +586,11 @@
|
||||
|
||||
|
||||
;; --- Dropdown mit gefilterter Liste neu befuellen ---
|
||||
(defun omni:weichen-dlg-refresh ( / filter sch-f ri-f gefiltert profil-liste)
|
||||
;; Die bisher angezeigte Weiche (*omni-dlg-weiche-akt*) bleibt gewaehlt, wenn sie
|
||||
;; den Filter passiert; sonst wird ihr Gegenstueck (aehnlichster ProfilTyp)
|
||||
;; gewaehlt - ein Klick auf "Rechts" macht aus 45-L-400/750 MIT M also
|
||||
;; 45-R-400/750 MIT M statt des ersten Listeneintrags.
|
||||
(defun omni:weichen-dlg-refresh ( / filter sch-f ri-f gefiltert profil-liste idx)
|
||||
(setq filter (omni:weichen-get-filter))
|
||||
(setq sch-f (car filter))
|
||||
(setq ri-f (cadr filter))
|
||||
@@ -536,11 +604,13 @@
|
||||
(mapcar 'add_list profil-liste)
|
||||
(end_list)
|
||||
|
||||
;; Ersten Eintrag anzeigen (falls vorhanden)
|
||||
;; Bisherige Weiche bzw. ihr Gegenstueck anzeigen (falls vorhanden)
|
||||
(if gefiltert
|
||||
(progn
|
||||
(set_tile "profiltyp" "0")
|
||||
(omni:weichen-dlg-update "0")
|
||||
(setq idx (omni:vorwahl-index *omni-dlg-weiche-akt* gefiltert))
|
||||
(if (null idx) (setq idx 0))
|
||||
(set_tile "profiltyp" (itoa idx))
|
||||
(omni:weichen-dlg-update (itoa idx))
|
||||
)
|
||||
(progn
|
||||
(set_tile "val_sivasnr" "---")
|
||||
@@ -553,23 +623,29 @@
|
||||
|
||||
|
||||
;; --- Detail-Felder im Weichen-Dialog aktualisieren ---
|
||||
(defun omni:weichen-dlg-update (idx-str / idx eintrag wkl)
|
||||
;; Fehlende Werte (null im Katalog, z.B. Weichenbatterien ohne KurvenWinkel/
|
||||
;; Breite/Laenge) werden als "---" angezeigt.
|
||||
(defun omni:weichen-dlg-update (idx-str / idx eintrag wkl br lg)
|
||||
(setq idx (atoi idx-str))
|
||||
(setq eintrag (nth idx *OMNI-DLG-WEICHEN*))
|
||||
(if eintrag
|
||||
(progn
|
||||
;; Merken fuer den naechsten Filterwechsel (omni:weichen-dlg-refresh)
|
||||
(setq *omni-dlg-weiche-akt* eintrag)
|
||||
(set_tile "val_sivasnr"
|
||||
(omni:sivasid-to-str (omni:val eintrag "Sivasnr")))
|
||||
(setq wkl (omni:val eintrag "KurvenWinkel"))
|
||||
(set_tile "val_winkel"
|
||||
(if (= (type wkl) 'INT) (strcat (itoa wkl) " Grad")
|
||||
(strcat (rtos wkl 2 1) " Grad")
|
||||
(cond
|
||||
((= (type wkl) 'INT) (strcat (itoa wkl) " Grad"))
|
||||
((numberp wkl) (strcat (rtos wkl 2 1) " Grad"))
|
||||
(T "---")
|
||||
)
|
||||
)
|
||||
(set_tile "val_breite"
|
||||
(itoa (fix (omni:val eintrag "Breite"))))
|
||||
(set_tile "val_laenge"
|
||||
(itoa (fix (omni:val eintrag "Länge"))))
|
||||
(setq br (omni:val eintrag "Breite"))
|
||||
(setq lg (omni:val eintrag "Länge"))
|
||||
(set_tile "val_breite" (if (numberp br) (itoa (fix br)) "---"))
|
||||
(set_tile "val_laenge" (if (numberp lg) (itoa (fix lg)) "---"))
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -580,8 +656,10 @@
|
||||
;; weichentyp = "Einzelweiche", "Doppelweiche", "Dreiwegeweiche" oder nil fuer alle
|
||||
;; init-hoehe / init-drehung = Vorbelegung (optional, fuer Edit-Modus)
|
||||
;; Rueckgabe: (eintrag hoehe drehung) oder nil bei Abbruch
|
||||
;; Vorwahl: *omni-dlg-vorwahl* (von OMNI_EDIT gesetzt) wird vorgewaehlt, die
|
||||
;; Filter Schaltung/Richtung stehen dann auf dessen Werten.
|
||||
(defun omni:weichen-dialog (winkel weichentyp init-hoehe init-drehung breite / dcl-pfad dat basis-liste
|
||||
profil-liste ergebnis dlg-hoehe)
|
||||
ergebnis dlg-hoehe sch kr)
|
||||
(if (null *OMNI-WEICHEN*) (omni:load-data))
|
||||
|
||||
;; Defaults
|
||||
@@ -630,28 +708,33 @@
|
||||
(setq *OMNI-DLG-WEICHEN-BASIS* basis-liste)
|
||||
(setq *OMNI-DLG-WEICHEN* basis-liste)
|
||||
|
||||
;; ProfilTyp-Liste fuer Dropdown aufbauen
|
||||
(setq profil-liste
|
||||
(mapcar '(lambda (e) (cdr (assoc "ProfilTyp" e))) basis-liste))
|
||||
|
||||
;; DCL laden
|
||||
(setq dcl-pfad (strcat (getenv "DXFM_DCL") "/omniflo_weichen.dcl"))
|
||||
(setq dat (load_dialog dcl-pfad))
|
||||
(if (not (new_dialog "omniflo_weichen" dat))
|
||||
(progn (alert (ssg-text "omni-weiche-dialog-ladefehler")) nil)
|
||||
(progn
|
||||
;; Dropdown befuellen
|
||||
(start_list "profiltyp")
|
||||
(mapcar 'add_list profil-liste)
|
||||
(end_list)
|
||||
(set_tile "profiltyp" "0")
|
||||
;; Beim Edit (OMNI_EDIT, *omni-dlg-vorwahl*) die Filter auf Schaltung/
|
||||
;; Richtung des Bauteils stellen; ohne Vorwahl bleibt "Alle".
|
||||
(setq *omni-dlg-weiche-akt* *omni-dlg-vorwahl*)
|
||||
(if *omni-dlg-vorwahl*
|
||||
(progn
|
||||
(setq sch (cdr (assoc "Schaltungstyp" *omni-dlg-vorwahl*)))
|
||||
(setq kr (omni:sivasid-to-str (cdr (assoc "KurvenRichtung" *omni-dlg-vorwahl*))))
|
||||
(cond ((= sch "M") (set_tile "sch_m" "1"))
|
||||
((= sch "P") (set_tile "sch_p" "1")))
|
||||
(cond ((= kr "1") (set_tile "ri_links" "1"))
|
||||
((= kr "2") (set_tile "ri_rechts" "1")))
|
||||
)
|
||||
)
|
||||
|
||||
;; Dropdown befuellen und Weiche waehlen (vorgewaehltes Bauteil bzw.
|
||||
;; ohne Vorwahl der erste Eintrag)
|
||||
(omni:weichen-dlg-refresh)
|
||||
|
||||
;; Hoehe initialisieren (Drehung erfolgt interaktiv nach dem Einfuegen)
|
||||
(set_tile "val_hoehe" init-hoehe)
|
||||
|
||||
;; Startwerte anzeigen
|
||||
(omni:weichen-dlg-update "0")
|
||||
|
||||
;; Callback bei Dropdown-Aenderung
|
||||
(action_tile "profiltyp" "(omni:weichen-dlg-update $value)")
|
||||
|
||||
@@ -1129,8 +1212,11 @@
|
||||
)
|
||||
)
|
||||
|
||||
;; 4. Dialog oeffnen mit vorhandenen Werten
|
||||
;; 4. Dialog oeffnen mit vorhandenen Werten; das bearbeitete Bauteil wird
|
||||
;; ueber *omni-dlg-vorwahl* im Dropdown vorgewaehlt (danach zuruecksetzen,
|
||||
;; damit die Menuebefehle wieder ohne Vorwahl starten).
|
||||
(setq dlg-result nil)
|
||||
(setq *omni-dlg-vorwahl* eintrag)
|
||||
(cond
|
||||
((= typ "bogen")
|
||||
(setq winkel (cdr (assoc "KurvenWinkel" eintrag)))
|
||||
@@ -1145,6 +1231,7 @@
|
||||
(setq dlg-result (omni:weichen-dialog winkel weichentyp hoehe drehung nil))
|
||||
)
|
||||
)
|
||||
(setq *omni-dlg-vorwahl* nil)
|
||||
|
||||
(if (null dlg-result)
|
||||
(progn (princ (ssg-text "omni-abbruch")) (ssg-end) (exit))
|
||||
@@ -1249,6 +1336,77 @@
|
||||
(princ)
|
||||
)
|
||||
|
||||
;; --- Omniflo / Weichenbatterien ---
|
||||
;; Fertige Weichenbatterien, DWG = ARTINR (aktuell nur in data/omniflo/2D,
|
||||
;; omni:omniflo-datei-finden faellt bei 3D darauf zurueck). Menuetexte (BESCHR)
|
||||
;; und Nummern aus data/omniflo/weichenbatterien_artinr_quelle.dxf. Der
|
||||
;; Doppelklick (OMNI_EDIT) findet sie im Weichen-Katalog omniflo_weichen.json
|
||||
;; unter WeichenTyp "Weichenbatterie" (Richtung/Schaltung umstellbar).
|
||||
(defun c:OMNI_WB_834372536 ()
|
||||
(omni:insert-dxf "834372536" nil nil)
|
||||
(princ)
|
||||
)
|
||||
(defun c:OMNI_WB_834372537 ()
|
||||
(omni:insert-dxf "834372537" nil nil)
|
||||
(princ)
|
||||
)
|
||||
(defun c:OMNI_WB_834372512 ()
|
||||
(omni:insert-dxf "834372512" nil nil)
|
||||
(princ)
|
||||
)
|
||||
(defun c:OMNI_WB_834372513 ()
|
||||
(omni:insert-dxf "834372513" nil nil)
|
||||
(princ)
|
||||
)
|
||||
(defun c:OMNI_WB_834372524 ()
|
||||
(omni:insert-dxf "834372524" nil nil)
|
||||
(princ)
|
||||
)
|
||||
(defun c:OMNI_WB_834372525 ()
|
||||
(omni:insert-dxf "834372525" nil nil)
|
||||
(princ)
|
||||
)
|
||||
(defun c:OMNI_WB_834372500 ()
|
||||
(omni:insert-dxf "834372500" nil nil)
|
||||
(princ)
|
||||
)
|
||||
(defun c:OMNI_WB_834372501 ()
|
||||
(omni:insert-dxf "834372501" nil nil)
|
||||
(princ)
|
||||
)
|
||||
(defun c:OMNI_WB_834372539 ()
|
||||
(omni:insert-dxf "834372539" nil nil)
|
||||
(princ)
|
||||
)
|
||||
(defun c:OMNI_WB_834372540 ()
|
||||
(omni:insert-dxf "834372540" nil nil)
|
||||
(princ)
|
||||
)
|
||||
(defun c:OMNI_WB_834372515 ()
|
||||
(omni:insert-dxf "834372515" nil nil)
|
||||
(princ)
|
||||
)
|
||||
(defun c:OMNI_WB_834372516 ()
|
||||
(omni:insert-dxf "834372516" nil nil)
|
||||
(princ)
|
||||
)
|
||||
(defun c:OMNI_WB_834372527 ()
|
||||
(omni:insert-dxf "834372527" nil nil)
|
||||
(princ)
|
||||
)
|
||||
(defun c:OMNI_WB_834372528 ()
|
||||
(omni:insert-dxf "834372528" nil nil)
|
||||
(princ)
|
||||
)
|
||||
(defun c:OMNI_WB_834372503 ()
|
||||
(omni:insert-dxf "834372503" nil nil)
|
||||
(princ)
|
||||
)
|
||||
(defun c:OMNI_WB_834372504 ()
|
||||
(omni:insert-dxf "834372504" nil nil)
|
||||
(princ)
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1335,7 +1493,8 @@
|
||||
;; profiltyp = Praefix zum Filtern des ProfilTyp, z.B. "AP 110" (nil = alle)
|
||||
;; init-hoehe = Vorbelegung Hoehe (nil = Default aus cfg)
|
||||
;; Rueckgabe: (eintrag hoehe nil) wie omni:bogen-dialog, oder nil bei Abbruch
|
||||
(defun omni:ladeschleifen-dialog (profiltyp init-hoehe / liste dat ergebnis dlg-hoehe profil)
|
||||
;; Vorwahl: *omni-dlg-vorwahl* (von OMNI_EDIT gesetzt) wird vorgewaehlt.
|
||||
(defun omni:ladeschleifen-dialog (profiltyp init-hoehe / liste dat ergebnis dlg-hoehe profil idx)
|
||||
(if (null *OMNI-LADESCHLEIFEN*) (omni:load-ladeschleifen))
|
||||
(if (null init-hoehe) (setq init-hoehe (ssg-cfg-or "omniflo" "default_hoehe" "2000")))
|
||||
|
||||
@@ -1367,9 +1526,12 @@
|
||||
(start_list "ladeschleife")
|
||||
(mapcar '(lambda (e) (add_list (omni:sivasid-to-str (omni:val e "Beschreibung")))) liste)
|
||||
(end_list)
|
||||
(set_tile "ladeschleife" "0")
|
||||
;; Beim Edit (OMNI_EDIT) das bearbeitete Bauteil vorwaehlen
|
||||
(setq idx (omni:vorwahl-index *omni-dlg-vorwahl* liste))
|
||||
(if (null idx) (setq idx 0))
|
||||
(set_tile "ladeschleife" (itoa idx))
|
||||
(set_tile "val_hoehe" init-hoehe)
|
||||
(omni:ladeschleife-dlg-update "0")
|
||||
(omni:ladeschleife-dlg-update (itoa idx))
|
||||
|
||||
(action_tile "ladeschleife" "(omni:ladeschleife-dlg-update $value)")
|
||||
(action_tile "accept"
|
||||
|
||||
+2
-1
@@ -704,12 +704,13 @@ AutoLISP-Implementierung fuer alle Omniflo-Komponenten: Boegen, Weichen, Verbind
|
||||
| Daten | `OMNI_LOAD`, `OMNI_INFO_BOGEN`, `OMNI_INFO_WEICHE` | JSON-Daten laden und abfragen |
|
||||
| Boegen | `OMNI_APB_630_90`, `OMNI_APB_550_675`, `OMNI_APB_630_45`, `OMNI_APB_550_225`, `OMNI_APB_650_180` | Omniflo-Boegen ueber DCL-Dialog einfuegen |
|
||||
| Weichen | `OMNI_W90_*`, `OMNI_W45_*`, `OMNI_WP_*`, `OMNI_WK_*`, `OMNI_WKomb_*` | Omniflo-Weichen (Einfach/Doppel/Dreiwege, Delta, Stern) |
|
||||
| Weichenbatterien | `OMNI_WB_<ARTINR>` (16) | Fertige Weichenbatterien, DWG `data/omniflo/2D/<ARTINR>.dwg` (nur 2D, Rueckfall per `omni:omniflo-datei-finden`), Menuetexte/Nummern aus `data/omniflo/weichenbatterien_artinr_quelle.dxf` (BESCHR/ARTINR). Im Katalog `omniflo_weichen.json` als `WeichenTyp` "Weichenbatterie" (ohne Winkel/Breite/Laenge), darum oeffnet der Doppelklick (`OMNI_EDIT`) den Weichen-Dialog mit allen Batterien - Richtung und Schaltung umstellbar |
|
||||
| Ladeschleifen | `OMNI_LADESCHLEIFE_AP110` | Ladeschleife aus `omniflo_ladeschleifen.json` ueber DCL-Dialog (`dcl/omniflo_ladeschleifen.dcl`) einfuegen; Daten per `ssg-json-laden` (Beschreibungen enthalten Kommas). Blockdatei `<Sivasnr>.dwg` unter `DXFM_OMNIFLO` (`omni:insert-dxf` faellt auf `.dwg` zurueck, wenn keine `.dxf` existiert). Per `OMNI_EDIT` editierbar |
|
||||
| TEF Elemente | `OMNI_TEF_UmlenkR/L`, `OMNI_TEF_AntriebL/R`, `OMNI_TEF_Gerade` | Feste TEF-Bauteile ohne Sivas-Auswahl, direkt per `omni:insert-dxf` an gewaehltem Punkt eingefuegt (Dateien unter `DXFM_OMNIFLO`) |
|
||||
| Anbaugruppen | `OMNI_STOPPER`, `OMNI_SCANNER`, `OMNI_BUERSTENBREMSE` | Implementiert |
|
||||
| Verbinder | `OMNI_TV_*` | Verbinder-DWG aus `data/omniflo/Verbinder` (dimensionsunabhaengig, `omni:insert-verbinder` -> `omni:insert-datei`, Punkt + Drehung interaktiv). Zuordnung Befehl -> DWG nach Dateiname, z.B. `OMNI_TV_W_AP60` -> `TV_W-AP60_oben`, `OMNI_TV_ENDPLATTE` -> `VB_ENDP_AP`, `OMNI_TV_W_AP60_KPL` -> `TV_W-AP60_kpl`, `OMNI_TV_ANSCHLAG` -> `VB_ENDP_AP_Spulenzug`, `OMNI_TV_SW_I_AP110` -> `TV_SW_I_SW-AP110`, `OMNI_TV_MUFFE` -> `VB_Muffe`. Alle 18 Eintraege aktiv |
|
||||
| Bogenweichen ⚠️ | `OMNI_APBW_*` | **Dummy** (noch nicht implementiert, im Menue ausgegraut) |
|
||||
| Bearbeiten | `OMNI_EDIT` | Omniflo-Block selektieren und Attribute bearbeiten |
|
||||
| Bearbeiten | `OMNI_EDIT` | Omniflo-Block selektieren und im Bogen-/Weichen-/Ladeschleifen-Dialog neu waehlen. Das bearbeitete Bauteil ist im Dropdown vorgewaehlt (`*omni-dlg-vorwahl*`, `omni:vorwahl-index`); im Weichen-Dialog stehen Schaltung/Richtung auf seinen Werten, und ein Filterwechsel waehlt das Gegenstueck mit dem aehnlichsten ProfilTyp (`omni:profil-aehnlichkeit`) statt des ersten Eintrags - nur L/R oder M/P umstellen braucht damit kein Dropdown |
|
||||
|
||||
Daneben zeichnet [`TEFInsert.lsp`](#tefinsertlsp--tef-geradenstuecke-entlang-einer-linie) (`TEF_FOERDERER_LINIE`) eine
|
||||
Kette von TEF-Geradenelementen (1000 mm) entlang einer frei gewaehlten Linie –
|
||||
|
||||
@@ -926,5 +926,197 @@
|
||||
"Länge": 360,
|
||||
"KurvenRichtung": 7,
|
||||
"SivasnrTEF": null
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372536,
|
||||
"ProfilTyp": "Weiche S C L1S 1C 200/1200/950 mit M",
|
||||
"WeichenTyp": "Weichenbatterie",
|
||||
"KurvenWinkel": null,
|
||||
"Schaltungstyp": "M",
|
||||
"Breite": null,
|
||||
"Länge": null,
|
||||
"KurvenRichtung": 1,
|
||||
"SivasnrTEF": null,
|
||||
"WeichenkörperLänge": null
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372537,
|
||||
"ProfilTyp": "Weiche S C L1S 1C 200/1200/950 mit P",
|
||||
"WeichenTyp": "Weichenbatterie",
|
||||
"KurvenWinkel": null,
|
||||
"Schaltungstyp": "P",
|
||||
"Breite": null,
|
||||
"Länge": null,
|
||||
"KurvenRichtung": 1,
|
||||
"SivasnrTEF": null,
|
||||
"WeichenkörperLänge": null
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372512,
|
||||
"ProfilTyp": "Weiche S C L1S 2C 200/1200/950 mit M",
|
||||
"WeichenTyp": "Weichenbatterie",
|
||||
"KurvenWinkel": null,
|
||||
"Schaltungstyp": "M",
|
||||
"Breite": null,
|
||||
"Länge": null,
|
||||
"KurvenRichtung": 1,
|
||||
"SivasnrTEF": null,
|
||||
"WeichenkörperLänge": null
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372513,
|
||||
"ProfilTyp": "Weiche S C L1S 2C 200/1200/950 mit P",
|
||||
"WeichenTyp": "Weichenbatterie",
|
||||
"KurvenWinkel": null,
|
||||
"Schaltungstyp": "P",
|
||||
"Breite": null,
|
||||
"Länge": null,
|
||||
"KurvenRichtung": 1,
|
||||
"SivasnrTEF": null,
|
||||
"WeichenkörperLänge": null
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372524,
|
||||
"ProfilTyp": "Weiche S C L2S 2C 200/1200/950 mit M",
|
||||
"WeichenTyp": "Weichenbatterie",
|
||||
"KurvenWinkel": null,
|
||||
"Schaltungstyp": "M",
|
||||
"Breite": null,
|
||||
"Länge": null,
|
||||
"KurvenRichtung": 1,
|
||||
"SivasnrTEF": null,
|
||||
"WeichenkörperLänge": null
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372525,
|
||||
"ProfilTyp": "Weiche S C L2S 2C 200/1200/950 mit P",
|
||||
"WeichenTyp": "Weichenbatterie",
|
||||
"KurvenWinkel": null,
|
||||
"Schaltungstyp": "P",
|
||||
"Breite": null,
|
||||
"Länge": null,
|
||||
"KurvenRichtung": 1,
|
||||
"SivasnrTEF": null,
|
||||
"WeichenkörperLänge": null
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372500,
|
||||
"ProfilTyp": "Weiche S C L2S 3C 200/1400/950 mit M",
|
||||
"WeichenTyp": "Weichenbatterie",
|
||||
"KurvenWinkel": null,
|
||||
"Schaltungstyp": "M",
|
||||
"Breite": null,
|
||||
"Länge": null,
|
||||
"KurvenRichtung": 1,
|
||||
"SivasnrTEF": null,
|
||||
"WeichenkörperLänge": null
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372501,
|
||||
"ProfilTyp": "Weiche S C L2S 3C 200/1400/950 mit P",
|
||||
"WeichenTyp": "Weichenbatterie",
|
||||
"KurvenWinkel": null,
|
||||
"Schaltungstyp": "P",
|
||||
"Breite": null,
|
||||
"Länge": null,
|
||||
"KurvenRichtung": 1,
|
||||
"SivasnrTEF": null,
|
||||
"WeichenkörperLänge": null
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372539,
|
||||
"ProfilTyp": "Weiche S C R1S 1C 200/1200/950 mit M",
|
||||
"WeichenTyp": "Weichenbatterie",
|
||||
"KurvenWinkel": null,
|
||||
"Schaltungstyp": "M",
|
||||
"Breite": null,
|
||||
"Länge": null,
|
||||
"KurvenRichtung": 2,
|
||||
"SivasnrTEF": null,
|
||||
"WeichenkörperLänge": null
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372540,
|
||||
"ProfilTyp": "Weiche S C R1S 1C 200/1200/950 mit P",
|
||||
"WeichenTyp": "Weichenbatterie",
|
||||
"KurvenWinkel": null,
|
||||
"Schaltungstyp": "P",
|
||||
"Breite": null,
|
||||
"Länge": null,
|
||||
"KurvenRichtung": 2,
|
||||
"SivasnrTEF": null,
|
||||
"WeichenkörperLänge": null
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372515,
|
||||
"ProfilTyp": "Weiche S C R1S 2C 200/1200/950 mit M",
|
||||
"WeichenTyp": "Weichenbatterie",
|
||||
"KurvenWinkel": null,
|
||||
"Schaltungstyp": "M",
|
||||
"Breite": null,
|
||||
"Länge": null,
|
||||
"KurvenRichtung": 2,
|
||||
"SivasnrTEF": null,
|
||||
"WeichenkörperLänge": null
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372516,
|
||||
"ProfilTyp": "Weiche S C R1S 2C 200/1200/950 mit P",
|
||||
"WeichenTyp": "Weichenbatterie",
|
||||
"KurvenWinkel": null,
|
||||
"Schaltungstyp": "P",
|
||||
"Breite": null,
|
||||
"Länge": null,
|
||||
"KurvenRichtung": 2,
|
||||
"SivasnrTEF": null,
|
||||
"WeichenkörperLänge": null
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372527,
|
||||
"ProfilTyp": "Weiche S C R2S 2C 200/1200/950 mit M",
|
||||
"WeichenTyp": "Weichenbatterie",
|
||||
"KurvenWinkel": null,
|
||||
"Schaltungstyp": "M",
|
||||
"Breite": null,
|
||||
"Länge": null,
|
||||
"KurvenRichtung": 2,
|
||||
"SivasnrTEF": null,
|
||||
"WeichenkörperLänge": null
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372528,
|
||||
"ProfilTyp": "Weiche S C R2S 2C 200/1200/950 mit P",
|
||||
"WeichenTyp": "Weichenbatterie",
|
||||
"KurvenWinkel": null,
|
||||
"Schaltungstyp": "P",
|
||||
"Breite": null,
|
||||
"Länge": null,
|
||||
"KurvenRichtung": 2,
|
||||
"SivasnrTEF": null,
|
||||
"WeichenkörperLänge": null
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372503,
|
||||
"ProfilTyp": "Weiche S C R2S 3C 200/1400/950 mit M",
|
||||
"WeichenTyp": "Weichenbatterie",
|
||||
"KurvenWinkel": null,
|
||||
"Schaltungstyp": "M",
|
||||
"Breite": null,
|
||||
"Länge": null,
|
||||
"KurvenRichtung": 2,
|
||||
"SivasnrTEF": null,
|
||||
"WeichenkörperLänge": null
|
||||
},
|
||||
{
|
||||
"Sivasnr": 834372504,
|
||||
"ProfilTyp": "Weiche S C R2S 3C 200/1400/950 mit P",
|
||||
"WeichenTyp": "Weichenbatterie",
|
||||
"KurvenWinkel": null,
|
||||
"Schaltungstyp": "P",
|
||||
"Breite": null,
|
||||
"Länge": null,
|
||||
"KurvenRichtung": 2,
|
||||
"SivasnrTEF": null,
|
||||
"WeichenkörperLänge": null
|
||||
}
|
||||
]
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+646
-449
File diff suppressed because it is too large.
Load diff
@@ -68,6 +68,24 @@
|
||||
[Delta 1600/800]^C^C(ssg-ensure "OmniModulInsert") OMNI_WKomb_Delta_1600
|
||||
[Delta 1400/700]^C^C(ssg-ensure "OmniModulInsert") OMNI_WKomb_Delta_1400
|
||||
[<-Star 1400/1400]^C^C(ssg-ensure "OmniModulInsert") OMNI_WKomb_Star
|
||||
[->Weichenbatterien]
|
||||
[Weiche S C L1S 1C 200/1200/950 mit M]^C^C(ssg-ensure "OmniModulInsert") OMNI_WB_834372536
|
||||
[Weiche S C L1S 1C 200/1200/950 mit P]^C^C(ssg-ensure "OmniModulInsert") OMNI_WB_834372537
|
||||
[Weiche S C L1S 2C 200/1200/950 mit M]^C^C(ssg-ensure "OmniModulInsert") OMNI_WB_834372512
|
||||
[Weiche S C L1S 2C 200/1200/950 mit P]^C^C(ssg-ensure "OmniModulInsert") OMNI_WB_834372513
|
||||
[Weiche S C L2S 2C 200/1200/950 mit M]^C^C(ssg-ensure "OmniModulInsert") OMNI_WB_834372524
|
||||
[Weiche S C L2S 2C 200/1200/950 mit P]^C^C(ssg-ensure "OmniModulInsert") OMNI_WB_834372525
|
||||
[Weiche S C L2S 3C 200/1400/950 mit M]^C^C(ssg-ensure "OmniModulInsert") OMNI_WB_834372500
|
||||
[Weiche S C L2S 3C 200/1400/950 mit P]^C^C(ssg-ensure "OmniModulInsert") OMNI_WB_834372501
|
||||
[--]
|
||||
[Weiche S C R1S 1C 200/1200/950 mit M]^C^C(ssg-ensure "OmniModulInsert") OMNI_WB_834372539
|
||||
[Weiche S C R1S 1C 200/1200/950 mit P]^C^C(ssg-ensure "OmniModulInsert") OMNI_WB_834372540
|
||||
[Weiche S C R1S 2C 200/1200/950 mit M]^C^C(ssg-ensure "OmniModulInsert") OMNI_WB_834372515
|
||||
[Weiche S C R1S 2C 200/1200/950 mit P]^C^C(ssg-ensure "OmniModulInsert") OMNI_WB_834372516
|
||||
[Weiche S C R2S 2C 200/1200/950 mit M]^C^C(ssg-ensure "OmniModulInsert") OMNI_WB_834372527
|
||||
[Weiche S C R2S 2C 200/1200/950 mit P]^C^C(ssg-ensure "OmniModulInsert") OMNI_WB_834372528
|
||||
[Weiche S C R2S 3C 200/1400/950 mit M]^C^C(ssg-ensure "OmniModulInsert") OMNI_WB_834372503
|
||||
[<-Weiche S C R2S 3C 200/1400/950 mit P]^C^C(ssg-ensure "OmniModulInsert") OMNI_WB_834372504
|
||||
[->TEF Elemente]
|
||||
[TEF Antriebst. rechts]^C^C(ssg-ensure "OmniModulInsert") OMNI_TEF_AntriebR
|
||||
[TEF Umlenkspannst. rechts]^C^C(ssg-ensure "OmniModulInsert") OMNI_TEF_UmlenkR
|
||||
|
||||
@@ -1218,6 +1218,41 @@
|
||||
(tu-eq "omni:verbinder-pfad/trenner"
|
||||
"C:/x/data/omniflo/Verbinder/VB_ENDP_AP.dwg"
|
||||
(omni:verbinder-pfad "C:/x/data/" "VB_ENDP_AP"))
|
||||
|
||||
;; Aehnlichkeit: Gegenstueck (nur L/R bzw. M/P anders) schlaegt andere Groesse
|
||||
(tu-eq "omni:profil-aehnlichkeit/gleich" 5 (omni:profil-aehnlichkeit "ABCDE" "ABCDE"))
|
||||
(tu-eq "omni:profil-aehnlichkeit/laenge" 2 (omni:profil-aehnlichkeit "ABC" "ABCD"))
|
||||
(tu-eq "omni:profil-aehnlichkeit/kein-string" 0 (omni:profil-aehnlichkeit nil "ABC"))
|
||||
(tu-true "omni:profil-aehnlichkeit/lr-vor-groesse"
|
||||
(> (omni:profil-aehnlichkeit "WEICHE S 45-L-400/750, KPL. MIT M"
|
||||
"WEICHE S 45-R-400/750, KPL. MIT M")
|
||||
(omni:profil-aehnlichkeit "WEICHE S 45-L-400/750, KPL. MIT M"
|
||||
"WEICHE S 45-R-350/700, KPL. MIT M")))
|
||||
|
||||
;; Vorwahl-Index: exakte Sivasnr, sonst Gegenstueck nach Filterwechsel
|
||||
(setq _wl
|
||||
'((("Sivasnr" . 1) ("ProfilTyp" . "WEICHE S 45-L-350/700, KPL. MIT M"))
|
||||
(("Sivasnr" . 2) ("ProfilTyp" . "WEICHE S 45-L-400/750, KPL. MIT M"))
|
||||
(("Sivasnr" . 3) ("ProfilTyp" . "WEICHE S 45-R-400/750, KPL. MIT M"))))
|
||||
(tu-eq "omni:vorwahl-index/sivasnr" 2
|
||||
(omni:vorwahl-index '(("Sivasnr" . 3) ("ProfilTyp" . "egal")) _wl))
|
||||
(tu-eq "omni:vorwahl-index/gegenstueck-lr" 1
|
||||
(omni:vorwahl-index
|
||||
'(("Sivasnr" . 9) ("ProfilTyp" . "WEICHE S 45-L-400/750, KPL. MIT P")) _wl))
|
||||
;; P mit TEF -> M ohne TEF: gleiche Groesse statt der kuerzeren 350/700
|
||||
(tu-eq "omni:vorwahl-index/tef-nach-m" 1
|
||||
(omni:vorwahl-index
|
||||
'(("Sivasnr" . "834372008+0_BG190090")
|
||||
("ProfilTyp" . "WEICHE S 45-L-400/750, KPL. MIT P mit TEF Ihnen"))
|
||||
(list (car _wl) (cadr _wl))))
|
||||
(tu-eq "omni:vorwahl-index/batterie" 1
|
||||
(omni:vorwahl-index
|
||||
'(("Sivasnr" . 834372536) ("ProfilTyp" . "Weiche S C L1S 1C 200/1200/950 mit M"))
|
||||
'((("Sivasnr" . 834372540) ("ProfilTyp" . "Weiche S C R1S 1C 200/1200/950 mit P"))
|
||||
(("Sivasnr" . 834372539) ("ProfilTyp" . "Weiche S C R1S 1C 200/1200/950 mit M"))
|
||||
(("Sivasnr" . 834372515) ("ProfilTyp" . "Weiche S C R1S 2C 200/1200/950 mit M")))))
|
||||
(tu-nil "omni:vorwahl-index/leer" (omni:vorwahl-index (car _wl) nil))
|
||||
(tu-nil "omni:vorwahl-index/ohne-ziel" (omni:vorwahl-index nil _wl))
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user