TEST_LINIENZUG (ebenso hmrec:stubs-aus und vsp-headless-aus) schaltete die GUI am Ende pauschal wieder ein. Unter SSG_RUN_ALL_TESTS fragte der direkt folgende EXPORTSIVAS dann nach Hoehen-Check/Bereinigen und der Lauf blieb stehen. Alle drei stellen jetzt den Vorzustand von *ssg-gui-aus* wieder her. SSG_RUN_ALL_TESTS schaltet zusaetzlich *csv-hoehencheck-fragen* und *csv-bereinigen-vor-export* fuer den Lauf ab (unmittelbar vor jedem Export erneut, export.lsp belegt nil beim Nachladen wieder mit T), erzwingt GUI aus mit Warnung und stellt am Ende die Vorgaben wieder her. Neues Laufprotokoll DXFM_LOG/testlauf_<name>.dbg je Test (Debug-Schalter "testlauf", Standard ein): Zustand vor/nach dem Test, Fehler, Ergebnis-JSON, Export-Schritte. Eigene Datei mit sofortigem Schreiben statt dbgopen, damit die Module mit ihren eigenen .dbg-Dateien es nicht umlenken und bei einem Haenger der letzte Schritt sichtbar ist. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
dxfmakros
AutoLISP-Makros (SSG_LIB) fuer BricsCAD Pro zur automatisierten Erstellung von Foerderanlagen-Layouts (ILS Kreisel, Omniflo, VarioFoerderer, Gefaellestrecke, Geruest).
Einstieg:
- doc/faq.md - haeufige Fragen und erste Schritte mit dem Programm
- doc/cad-datenaufbereitung.md - neue CAD-Bausteine anlegen: Koordinatensysteme, Platzierung, Datenablage
Menustruktur (SSG_LIB)
SSG_LIB
├── ILS
│ ├── Kreisel-Module
│ │ ├── Einfuegen / Verbinden / Bearbeiten → KreiselInsert / KreiselConnect / KreiselEdit
│ │ ├── Eckrad / Eckrad bearbeiten → ILS_Eckrad / EckradEdit
│ │ └── Weichenpunkte ermitteln → KREISEL_WEICHEN
│ ├── Zusatzmodul
│ │ ├── BTMT-Beladung / -Entladung → ILS_BTMT_Beladung / ILS_BTMT_Entladung
│ │ └── Scanner / Separator einfuegen → ILS_SCANNER_INSERT / ILS_SEPARATOR_INSERT
│ ├── Foerderer
│ │ ├── Standard (Werte manuell / aus 3D-Linie) → StandardVarioFoerderer / StandardVarioFoerderer3D
│ │ ├── Etage (Werte manuell / aus 3D-Linie) → EtageVarioFoerderer / EtageVarioFoerderer3D
│ │ ├── Streckengruppe (Linienzug) → LinienzugVarioFoerdererManuell / -Zielhoehe / -Stueckweise
│ │ └── Vario_Kette_Merge / VarioFoerderer nachruesten → Vario_Kette_Merge / VARIOFOERDERER_NACHRUESTEN
│ └── Gefaellestrecke
│ ├── einfach / aus 3D-Linie / aus Linienzug → GEFAELLESTRECKE_EINFACH / _3DLINIE / _LINIENZUG
│ └── QC Linie mit GF (auch U-Form) → QcLinieMitGf / QcLinieMitGfUForm
├── Omniflo
│ ├── Fahrstrecke / Fahrstrecken beschriften → OMNI_FAHRSTRECKE / OMNI_FAHRSTRECKE_BESCHRIFTEN
│ ├── Boegen APB110 / APB60, Aluprofil Gerade (AP60/AP110/APG110)
│ ├── Weichen (90/45/Parallel/22.5, Delta, Star)
│ ├── TEF Elemente (inkl. TEF Gerade auf Linie → TEF_FOERDERER_LINIE)
│ ├── Anbaugruppen (Stopper, Scanner, Buerstenbremse)
│ ├── Spez. Streckenelemente ▸ Tuerloesungen ▸ Schwenkschienen → OMNI_SCHW_400_*
│ ├── KettenFoerderer → KETTENFOERDERER
│ ├── Ladeschleifen → OMNI_LADESCHLEIFE_AP110
│ ├── Verbinder → OMNI_TV_*
│ ├── Boegen fuer Weichen (ausgegraut, Dummy) → OMNI_APBW_*
│ └── Element bearbeiten → OMNI_EDIT
├── Geruest
│ ├── Rohr-Geruest-Traeger → GERUEST_TRAEGER
│ ├── Saeulen / Rohrabhaenger / Wandbefestigung → GERUEST_SAEULEN / GERUEST_ROHRABHAENGER / GERUEST_WANDBEFESTIGUNG
│ ├── Gattertraeger (Platzhalter) → GERUEST
│ └── Funktionen ▸ Traeger beschriften → GERUEST_TRAEGER_BESCHRIFTEN
├── SPS
│ ├── TRO (Marker einfuegen/bearbeiten) → TRO_INSERT / TRO_EDIT
│ ├── Connections (einfuegen/bearbeiten) → CONNECTION_INSERT / CONNECTION_EDIT
│ └── Eingang / Ausgang → ILS_EINGANG_INSERT / ILS_AUSGANG_INSERT
├── Export
│ ├── Export Sivas → EXPORTSIVAS
│ └── Export CSV → EXPORTCSV
├── Konfiguration
│ ├── Umschalten 2D und 3D → SSG_DIM_SWITCH
│ ├── Alle Bloecke auf 2D / 3D → SSG_DIM_ALL_2D / SSG_DIM_ALL_3D
│ ├── Sprache → SSG_SPRACHE
│ ├── Planquadrate an/aus → PLANQUADRATE_TOGGLE
│ └── CSV-Export → CSV_EXPORT_KONFIG
├── Werkzeuge
│ ├── Bloecke zaehlen / loeschen, Attribute ersetzen → SSG_BLOCK_COUNT / SSG_BLOCK_DELETE / SSG_ATTR_ERSETZEN
│ ├── Text ersetzen / parallel / Hoehe / Stil → SSG_TEXT_ERSETZEN / _PARALLEL / _HOEHE / _STIL
│ ├── Faehnchen + Stueckliste aus Zeichnung → SSG_FAEHNCHEN_STUECKLISTE
│ └── Din Formate → DIN_FORMATE
└── Tests (alle Testsuiten, einzelne Szenarien, Export CSV/Sivas ALL, KS 2D/3D pruefen)
Doppelklick auf einen Block ruft SSG_BLOCKEDIT auf und verzweigt nach Blockname
(Kreisel, Eckrad, VF_/GF_, KF_, Omniflo, GR_, TRO_, CONNECTION_, JAM_ → passender Edit-Befehl).
Vollstaendige, laufend aktualisierte Befehls-/Modulzuordnung: siehe CLAUDE.md (Abschnitt "Modulzuordnung im Menue") und menu/SSG_LIB.mnu.
Lademechanismus
Die Module werden beim Laden des Menues ueber SSG_LIB.mnl initialisiert (ssg-ensure, ueberspringt bereits geladene Module; einzelne Module wie DrawPlanquadrate, DinFormate, Tro_Edit, Jam_Edit werden erst beim ersten Aufruf nachgeladen). Einmalige Einrichtung pro BricsCAD-Installation:
bin/setenv.batausfuehren (setztDXFM_LISPu.a.)- BricsCAD starten
- In der Kommandozeile
_MENULOADeingeben,menu/SSG_LIB.mnuauswaehlen
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, start_briscad, run_tests, Python-Wrapper)
├── cfg/ # Konfigurationsdateien
├── data/ # JSON-Komponentendaten, DWG-/DXF-Bloecke, Block-Libraries
├── dcl/ # DCL-Dialogdefinitionen
├── doc/ # Dokumentation (doc/plan Architektur/Analysen, doc/todo offene Fahrplaene)
├── lang/ # Benutzertexte de_DE.json / en_GB.json (ssg-text)
├── lib/ # Python-Skripte (DXF-Bearbeitung, Export)
├── logs/ # Logdateien und .dbg-Ausgaben (DXFM_LOG) - nicht im Git
├── menu/ # BricsCAD-Menudefinition (SSG_LIB.mnu, SSG_LIB.mnl)
├── results/ # Ergebnisse / Exporte - nicht im Git
├── tests/ # Testskripte und Referenzdaten
├── tools/ # Einmal-Werkzeuge (z.B. Migration der Sprachtexte)
├── 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
Python-Tests (in der .venv):
pytest tests/
bin\run_tests.bat --check
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. kommandos.md - Uebersicht aller Befehle und Skripte, variofoerderer.md, vf_linienzug_modus1_anleitung.md, csv-export.md, json-input-lisp.md, faq.md). Architektur-Analysen und Planungsdokumente in doc/plan/ (u.a. translate.md, Entwicklungsplan.md), alle offenen TODOs gesammelt in doc/todo.md (Detail-Fahrplaene in doc/todo/).
Lizenz
MIT License — siehe LICENSE
Autor
Michael Stangl (GitHub: mistamichael)