y.wang cccd362bba feat: VF-Hoehe je Segment (Sivas 4433-4437) + AS-Zufuehrungsachse bei 30 Grad
Zwei Themen, die dieselben Dateien beruehren und daher zusammen gehen.

1) VF_HOEHE_m - Hoehe je VF-Segment, Sivas-Merkmale 4433-4437

   Sivas erwartet je Streckengruppe bis zu fuenf Variofoerderer-Hoehen.
   Neues Block-Attribut VF_HOEHE_m: kommagetrennte Liste in Metern mit 3
   Nachkommastellen, Eintrag fuer Eintrag parallel zu L_VF_m/VF_WINKEL.

   Je Eintrag der Mittelwert aus KS_EIN und KS_AUS DES GERADEN VF-Abschnitts.
   Zwischen Umlenk- und Motorstation koennen mehrere Abschnitte liegen
   (auf/ab/horizontal), jeder bekommt einen eigenen Wert.

   SONDERFALL Standard/Etage: dort gibt es nur einen Motor und nur einen
   geraden Abschnitt - gemessen wird die GANZE Kette (AS-KS_EIN bis
   ES-KS_AUS, vf-vfhoehe-kette). Das ersetzt den Segmentwert; der Linienzug
   laeuft nicht durch vf-dialog-berechnen-einfuegen und behaelt seine Liste.

   WICHTIG - vollstaendige Erfassung: die VF-Segmente entstehen NICHT alle in
   vfs-vf-koerper. Horizontale Zwischenstuecke, das "schon flach"-Segment und
   die Modus-2/3-Fuellstuecke bauen direkt mit insert-inclined-scaled-block,
   die Kette-Merge-Rekonstruktion liest sie aus bestehenden Bloecken. Ein
   erster Fix nur in vfs-vf-koerper lieferte darum zu wenige Werte (realer
   Befund: L_VF_m hatte drei Eintraege, VF_HOEHE_m einen). Jetzt sind alle 14
   Stellen erfasst, die vfl-acc-vf-seg aufrufen - dafuer das Paar
   vf-vfhoehe-merke/-schliesse, das ohne lokale Variable auskommt.

   REGEL (im Code dokumentiert): Jede Stelle, die vfl-acc-vf-seg aufruft,
   MUSS auch eine Hoehe erfassen - sonst verschiebt sich die Liste gegen
   L_VF_m und im Export landet eine Hoehe beim falschen Foerderer.

   Formatierung ueber vf-meter-3: (rtos x 2 3) allein kuerzt je nach DIMZIN
   nachfolgende Nullen ("2.5" statt "2.500", "-1" statt "-1.000") - im
   Testlauf real aufgetreten.

   Attribut-Schema *strecke-attr-gruppe* (ssg_core.lsp) ergaenzt, sonst
   verschluckt ssg-attrib-set-on den neuen Tag stillschweigend.
   export_sivas.py verteilt die Liste auf VF_HOEHE_MERKMALE (4433-4437);
   ueberzaehlige Abschnitte werden weggelassen statt zusammengefasst, fehlende
   lassen das Merkmal ganz weg.

2) AS-Element 30 Grad: Zufuehrungsachse statt Seitenwahl

   Der Startpunkt einer Kette mit AS-Element ist geometrisch keine Position,
   sondern eine ACHSE: das AS sitzt an einer durchlaufenden Strecke und
   schleust daraus aus, seine KS_EIN-Achse muss darauf liegen. Bisher richtete
   vfl-insert-as-element das KS_AUS entlang der Kettenrichtung aus, wodurch
   das KS_EIN um den Blockschwenk verdreht stand - beim 90-Grad-Element kaum
   sichtbar, beim 30-Grad-Element deutlich.

   Beim 30-Grad-Element wird die Seitenauswahl im AS-Gruppendialog jetzt
   ausgegraut; stattdessen gibt ein zweiter Punkt die Zufuehrungsrichtung
   (der Startpunkt bleibt der Sitz des Elements). Die Seite folgt aus der Lage
   des naechsten Kettenpunkts zur Achse (vfl-seite-aus-lage). 90 Grad bleibt
   unveraendert bei der Seitenfrage.

   Der Dialog legt bei 30 Grad bewusst KEINE Seite mehr in die Pending-Queue -
   sonst zog die nachfolgende Punktfrage sie als vermeintlichen Punkt heraus
   und erschien gar nicht (realer Fehler beim ersten Test).

   Abwaertskompatibilitaet: aeltere 30-Grad-Ketten wurden noch MIT Seitenfrage
   gebaut. vfl-replay-peek-art sieht beim Replay nach, was tatsaechlich
   ansteht ("PT" = Achse, "STR" = Seite) - die Modus-Wahl selbst wird nicht
   journalisiert, weil sie daraus eindeutig rekonstruierbar ist.

Unit-Suite 687/687 gruen. VF-Hoehe in BricsCAD bestaetigt. Die AS-Achsenfrage
ist dort noch NICHT gelaufen, seit die Seitenauswahl ausgegraut wird.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-10-21 12:55:02 +02:00
2026-10-14 15:09:10 +02:00
2026-05-05 16:06:06 +02:00

dxfmakros

AutoLISP-Makros (SSG_LIB) fuer BricsCAD Pro zur automatisierten Erstellung von Foerderanlagen-Layouts (ILS Kreisel, Omniflo, VarioFoerderer, Gefaellestrecke, Geruest).

Menustruktur (SSG_LIB)

SSG_LIB
├── ILS
│   ├── Kreisel-Module
│   │   ├── Einfuegen              → KreiselInsert
│   │   ├── Verbinden              → KreiselConnect
│   │   ├── Bearbeiten             → KreiselEdit
│   │   └── Eckrad                 → ILS_Eckrad
│   ├── Zusatzmodul
│   │   ├── BTMT-Beladung          → ILS_BTMT_Beladung
│   │   ├── BTMT-Entladung         → ILS_BTMT_Entladung
│   │   ├── Scanner einfuegen      → ILS_SCANNER_INSERT
│   │   └── Separator einfuegen    → ILS_SEPARATOR_INSERT
│   ├── Foerderer
│   │   ├── Standard                   → StandardVarioFoerderer / StandardVarioFoerderer3D
│   │   ├── Etage                      → EtageVarioFoerderer / EtageVarioFoerderer3D
│   │   ├── Streckengruppe (Linienzug) → LinienzugVarioFoerdererManuell / -Zielhoehe / -Stueckweise
│   │   └── Vario_Kette_Merge / VARIOFOERDERER_NACHRUESTEN
│   └── Gefaellestrecke
│       ├── einfach                → GEFAELLESTRECKE_EINFACH
│       ├── aus 3D-Linie            → GEFAELLESTRECKE_3DLINIE
│       └── aus Linienzug           → GEFAELLESTRECKE_LINIENZUG
├── Omniflo
│   ├── Boegen APB110/APB60
│   ├── Aluprofil Gerade (AP60/AP110/APG110)
│   ├── Weichen (90/45/Parallel/Weichenkoerper/Weichenkombinationen)
│   ├── TEF Elemente, Anbaugruppen, Verbinder, Boegen fuer Weichen
│   ├── Element bearbeiten         → OMNI_EDIT
│   └── Ladeschleifen (AP110)      → OMNI_LADESCHLEIFE_AP110
├── Geruest
│   ├── Rohr-Geruest-Traeger       → GERUEST_TRAEGER
│   ├── Saeulen / Rohrabhaenger / Wandbefestigung → GERUEST
│   └── Funktionen ▸ Traeger beschriften → GERUEST_TRAEGER_BESCHRIFTEN
├── SPS
│   ├── TRO (Marker einfuegen/bearbeiten)        → TRO_INSERT / TRO_EDIT
│   └── Connections (einfuegen/bearbeiten, Eingang/Ausgang) → CONNECTION_INSERT / CONNECTION_EDIT / ILS_EINGANG_INSERT / ILS_AUSGANG_INSERT
├── Export
│   ├── Export Sivas                → EXPORTSIVAS
│   └── Export CSV                  → EXPORTCSV
├── Konfiguration
│   ├── Umschalten 2D und 3D        → SSG_DIM_SWITCH
│   ├── Sprache                     → SSG_SPRACHE
│   └── Planquadrate an/aus         → PLANQUADRATE_TOGGLE
├── Werkzeuge
│   ├── Bloecke zaehlen/loeschen, Attribute ersetzen → ssg_blocktools
│   └── Text ersetzen/parallel/Hoehe/Stil            → ssg_texttools
└── Tests (Testsuiten ausfuehren und exportieren)

Vollstaendige, laufend aktualisierte Befehls-/Modulzuordnung: siehe CLAUDE.md (Abschnitt "Modulzuordnung im Menue") und menu/SSG_LIB.mnu.

Lademechanismus

Module werden per Lazy-Loading ueber das Menuesystem geladen (ssg-ensure in SSG_LIB.mnl). Einmalige Einrichtung pro BricsCAD-Installation:

  1. bin/setenv.bat ausfuehren (setzt DXFM_LISP u.a.)
  2. BricsCAD starten
  3. In der Kommandozeile _MENULOAD eingeben, menu/SSG_LIB.mnu auswaehlen

Details und die Core-Ladereihenfolge: siehe CLAUDE.md Abschnitt "Lademechanismus (Lazy Loading via MNL)".

Projektstruktur

dxfmakros/
├── Lisp/                  # AutoLISP-Makros und Kernbibliotheken (Details: Lisp/README.md)
├── bin/                   # Hilfs-Skripte (setenv.bat, start_briscad.bat)
├── cfg/                   # Konfigurationsdateien
├── data/                  # JSON-Daten, DXF-Quellen, Block-Libraries - nicht im Git
├── dcl/                   # DCL-Dialogdefinitionen
├── doc/                   # Dokumentation (doc/plan Architektur/Analysen, doc/todo offene Fahrplaene)
├── lib/                   # Python-Skripte (DXF-Bearbeitung, Export)
├── log/                   # Logdateien - nicht im Git
├── menu/                  # BricsCAD-Menudefinition (SSG_LIB.mnu, SSG_LIB.mnl)
├── results/               # Ergebnisse / Exporte - nicht im Git
├── tests/                 # Testskripte und Referenzdaten
├── LICENSE
├── README.md
└── requirements.txt

Umgebungsvariablen

Werden via bin/setenv.bat gesetzt. Wichtigste:

Variable Beschreibung
DXFMAKRO Wurzelverzeichnis des Projekts
DXFM_LISP Pfad zu den LISP-Dateien (benoetigt fuer ssg-ensure)
DXFM_BLOCKS Pfad zu DWG-Bloecken
DXFM_DATA Datenverzeichnis (JSON, DXF)
DXFM_LOG Log-Verzeichnis
DXFM_DCL Pfad zu DCL-Dialogdateien
DXFM_CFG Konfigurationsverzeichnis
DXFM_LANG Aktive Sprache (de_DE/en_GB), persistiert von SSG_SPRACHE; Default de_DE
DXFM_VF_SPEC Spec-Datei fuer VF_SPEC_BAU (optional)
BRICSCAD Pfad zur BricsCAD-Executable (fuer headless Testlauf)

Tests

Headless-Unit-Tests (file- und zeichnungsfrei):

bin\run_tests.bat --lisp

Zeichnungs-/Szenario-Tests laufen interaktiv in BricsCAD ueber das Menue Tests bzw. SSG_RUN_ALL_TESTS. Details: doc/LispTests.md, tests/README.md.

Dokumentation

Ausfuehrliche Modul- und Befehlsdokumentation: CLAUDE.md (Projektanweisungen) und Lisp/README.md. Weitere Anwender-/Entwickler-Themen direkt in doc/ (u.a. variofoerderer.md, csv-export.md, faq.md, kommandos.md). Architektur-Analysen und Planungsdokumente in doc/plan/ (u.a. translate.md, Entwicklungsplan.md), offene Fahrplaene/TODOs in doc/todo/.

Lizenz

MIT License — siehe LICENSE

Autor

Michael Stangl (GitHub: mistamichael)

S
Description
No description provided
Readme MIT 2.8 GiB
Languages
Common Lisp 70%
Python 26.1%
Clean 2.5%
Batchfile 0.7%
NewLisp 0.6%
Other 0.1%