Files
dxfmakros/README.md
T
m.stangl 640a988fa3 docs: README, CLAUDE.md und Befehlsdoku auf aktuellen Stand gebracht
- README.md: Menuebaum neu aus SSG_LIB.mnu (Weichenpunkte, Eckrad-Edit,
  QC-Linie, Fahrstrecke, KettenFoerderer, Schwenkschienen, Stueckliste,
  Din Formate, alle Bloecke 2D/3D ...), Projektstruktur (logs/, lang/,
  tools/, data/ ist eingecheckt), Ladeweg, pytest-Aufruf
- CLAUDE.md: entfernte Dummy-Befehle ILS_ETF_*/ILS-Kurven raus, Module
  Connection_Edit/Jam_Edit/TEFInsert und fehlende DCLs ergaenzt,
  SSG_BLOCKEDIT-Zweige vervollstaendigt, veraltete Verweise
  (geruest-dcl-listenhoehe, object_data.md) korrigiert, Entwicklungsstand
- Lisp/README.md: Kurven-Dummys entfernt, tests.lsp -> external_call.lsp,
  Geruest-Dialog als DCL-Vorlage, GR_* -> EATTEDIT, neue Abschnitte fuer
  JAM_EDIT, KettenFoerderer, Stueckliste/DIN, Export-Hilfen, Pflege-Module
- doc/kommandos.md: ~25 fehlende Befehle ergaenzt, OMNI_KettenFoerderer
  entfernt, create_tests.bat als veraltet markiert (ILS_test.scr fehlt)
- doc/plan/Entwicklungsplan.md: Meilenstein-Status nachgezogen
- doc/todo/*: Pruefvermerk 2026-10-26 - beide Fahrplaene weiterhin offen

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 09:15:20 +01:00

145 lines
7.7 KiB
Markdown

# 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 / 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:
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
```text
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):
```bat
bin\run_tests.bat --lisp
```
Python-Tests (in der `.venv`):
```bat
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`), offene Fahrplaene/TODOs in `doc/todo/`.
## Lizenz
MIT License — siehe [LICENSE](LICENSE)
## Autor
Michael Stangl (GitHub: mistamichael)