From 8eed3e438ff9d308924675bc0c98a5ccfba15110 Mon Sep 17 00:00:00 2001 From: Michael Stangl Date: Fri, 9 Oct 2026 10:15:58 +0200 Subject: [PATCH] [DOC] README.md auf aktuellen Stand gebracht (Menuestruktur, MENULOAD-Lademechanismus, Projektstruktur, Umgebungsvariablen) Veraltete Inhalte entfernt (alter on_start.lsp/startup.scr-Loader, fehlende Module wie Geruest/SPS/Connections/TRO, nicht mehr existierende Verzeichnisse/Variablen). Detaillierte Modul-/Befehlsdokumentation wird nicht mehr dupliziert, sondern per Verweis auf CLAUDE.md und Lisp/README.md gefuehrt. Co-Authored-By: Claude Sonnet 5 --- README.md | 229 ++++++++++++++++-------------------------------------- 1 file changed, 68 insertions(+), 161 deletions(-) diff --git a/README.md b/README.md index 9f9bdfc..61630db 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # dxfmakros -AutoLISP-Makros fuer BricsCAD Pro zur automatisierten Erstellung von Foerderanlagen- und Kreisel-Layouts. +AutoLISP-Makros (SSG_LIB) fuer BricsCAD Pro zur automatisierten Erstellung von Foerderanlagen-Layouts (ILS Kreisel, Omniflo, VarioFoerderer, Gefaellestrecke, Geruest). ## Menustruktur (SSG_LIB) @@ -14,164 +14,70 @@ SSG_LIB │ │ └── Eckrad → ILS_Eckrad │ ├── Zusatzmodul │ │ ├── BTMT-Beladung → ILS_BTMT_Beladung -│ │ └── BTMT-Entladung → ILS_BTMT_Entladung +│ │ ├── BTMT-Entladung → ILS_BTMT_Entladung +│ │ ├── Scanner einfuegen → ILS_SCANNER_INSERT +│ │ └── Separator einfuegen → ILS_SEPARATOR_INSERT │ ├── Foerderer -│ │ ├── VarioFoerderer → FOERDERANLAGE -│ │ └── Gefaellestrecke → ILS_G{K90,K60,K30}{L,R} -│ └── ILS Schliessen +│ │ ├── 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 -│ │ ├── 90 → OMNI_APB_630_90 -│ │ ├── 67.5 → OMNI_APB_550_675 -│ │ ├── 45 → OMNI_APB_630_45 -│ │ ├── 22.5 → OMNI_APB_550_225 -│ │ └── 180 → OMNI_APB_650_180 -│ ├── Aluprofil Gerade -│ │ ├── AP 60 → OMNI_AP60 -│ │ ├── AP 110 → OMNI_AP110 -│ │ └── APG 110 → OMNI_APG110 -│ ├── Weiche 90 Grad -│ │ ├── Einfach → OMNI_W90_Einfach -│ │ ├── Doppel → OMNI_W90_Doppel -│ │ └── Dreiwege → OMNI_W90_Dreiwege -│ ├── Weiche 45 Grad -│ │ ├── Einfach → OMNI_W45_Einfach -│ │ ├── Doppel → OMNI_W45_Doppel -│ │ └── Dreiwege → OMNI_W45_Dreiwege -│ ├── Weichen Parallel -│ │ ├── Einfach → OMNI_WP_Einfach -│ │ ├── Doppel → OMNI_WP_Doppel -│ │ └── Dreiwege → OMNI_WP_Dreiwege -│ ├── Weichenkoerper -│ │ ├── Einfach → OMNI_WK_Einfach -│ │ ├── Doppel → OMNI_WK_Doppel -│ │ └── Dreiwege → OMNI_WK_Dreiwege -│ ├── Weichenkombinationen -│ │ ├── Delta 1400/700 → OMNI_WKomb_Delta_1400 -│ │ ├── Delta 1600/800 → OMNI_WKomb_Delta_1600 -│ │ └── Star → OMNI_WKomb_Star -│ ├── TEF Elemente -│ │ ├── Umlenkspannst. rechts → OMNI_TEF_UmlenkR -│ │ ├── Umlenkspannst. links → OMNI_TEF_UmlenkL -│ │ ├── Antriebst. links → OMNI_TEF_AntriebL -│ │ ├── Antriebst. rechts → OMNI_TEF_AntriebR -│ │ └── TEF Gerade → OMNI_TEF_Gerade -│ ├── KettenFoerderer → OMNI_KettenFoerderer -│ └── Ladeschleifen -│ └── AP 110 → OMNI_LADESCHLEIFE_AP110 +│ ├── 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 -└── External - ├── Call Python → CALLPYTHON - ├── Export Sivas → EXPORTSIVAS - └── Export CSV → EXPORTCSV +│ ├── 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) ``` -## Befehle nach Modul +Vollstaendige, laufend aktualisierte Befehls-/Modulzuordnung: siehe `CLAUDE.md` (Abschnitt "Modulzuordnung im Menue") und `menu/SSG_LIB.mnu`. -### KreiselInsert.lsp - Kreisel Modul-Einfuegesystem +## Lademechanismus -Zeichnet ILS-Kreiselmodule als Compound-Bloecke mit konfigurierbarem Abstand, Typ und Attributen. +Module werden per Lazy-Loading ueber das Menuesystem geladen (`ssg-ensure` in `SSG_LIB.mnl`). Einmalige Einrichtung pro BricsCAD-Installation: -| Befehl | Beschreibung | -| --- | --- | -| `KreiselInsert` | Modul an manuell gewaehltem Punkt einfuegen (Abstand, Drehung, Hoehe, Typ interaktiv) | -| `KreiselConnect` | Smart Connect: Kreisel zwischen zwei parallelen Linien einfuegen, berechnet Position/Abstand/Rotation automatisch | -| `KreiselEdit` | Bestehenden Kreisel per DCL-Dialog bearbeiten (Name, Abstand, Hoehe, Ausrichtung, Drehrichtung, Typ) | -| `KreiselRedraw` | Kreisel mit optionalem neuem Abstand/Hoehe neu zeichnen, Attribute bleiben erhalten | -| `KreiselQuick` | Schnelleinfuegen mit Standardparametern (horizontal) | -| `KreiselParams` | Aktuelle Kreisel-Parameterkonfiguration anzeigen | -| `ILS_Eckrad` | Einzelnen AN8-Block (Antriebs-/Eckrad) an gewaehltem Punkt einfuegen | -| `KreiselLabelPos` | Label-Position (X/Y-Offset) konfigurieren | -| `KreiselLabelHoehe` | Label-Texthoehe konfigurieren | -| `KreiselLabelSetup` | Label-Darstellung konfigurieren (Hoehe, Farbe, Abstand, Schriftart) | +1. `bin/setenv.bat` ausfuehren (setzt `DXFM_LISP` u.a.) +2. BricsCAD starten +3. In der Kommandozeile `_MENULOAD` eingeben, `menu/SSG_LIB.mnu` auswaehlen -### OmniModulInsert.lsp - Omniflo Komponenten - -Einfuegen von Omniflo-Standardkomponenten (Boegen, Geraden, Weichen, TEF-Elemente). - -| Befehl | Beschreibung | -| --- | --- | -| `OMNI_LOAD` | Omniflo-Komponentendaten aus JSON-Dateien laden | -| `OMNI_INFO_BOGEN` | Info zu einem Omniflo-Bogen nach Sivas-ID anzeigen | -| `OMNI_INFO_WEICHE` | Info zu einer Omniflo-Weiche nach Sivas-ID anzeigen | -| `OMNI_APB_*` | Boegen einfuegen (90, 67.5, 45, 22.5, 180 Grad) | -| `OMNI_AP60/AP110/APG110` | Aluprofil-Geraden einfuegen | -| `OMNI_W90/W45/WP/WK_*` | Weichen einfuegen (Einfach, Doppel, Dreiwege) | -| `OMNI_WKomb_Delta_1400/1600, OMNI_WKomb_Star` | Weichenkombinationen einfuegen | -| `OMNI_TEF_*` | TEF-Elemente einfuegen (Umlenk-/Antriebsstationen, Gerade) | -| `OMNI_KettenFoerderer` | Kettenfoerderer einfuegen | -| `OMNI_LADESCHLEIFE_AP110` | Ladeschleife (AP 110) ueber DCL-Dialog einfuegen | - -### VarioFoerderer.lsp - Foerderanlage Generator (v24.4) - -Generiert komplette Vario-Foerderanlagen mit Vertikalboegen, Motor-/Spannstationen, Staustrecken und Ein-/Ausschleus-Elementen. - -| Befehl | Beschreibung | -| --- | --- | -| `FOERDERANLAGE` | Interaktiver Generator: Zwei Punkte oder manuelle Distanz/Hoehe, berechnet optimalen Bogenwinkel | -| `FOERDERTEST` | Automatischer Testlauf (Distanz=6000, Hoehe=2000, Richtung=Auf), speichert als DXF | - -Unterstuetzte Bogenwinkel: 3, 9, 12, 15, 24, 36, 48 Grad - -### ssg_layer.lsp - Layerverwaltung - -| Befehl | Beschreibung | -| --- | --- | -| `SSG-LayerSet` | Objekt anklicken, dessen Layer wird aktiv | -| `SSG-LayerInfo` | Layer eines angeklickten Objekts anzeigen | -| `SSG-LayerMove` | Selektierte Objekte auf Ziel-Layer verschieben | -| `SSG-LayerCopy` | Selektierte Objekte auf Ziel-Layer kopieren | -| `SSG-LayerMoveType` | Alle Objekte gleichen Typs von Referenz- auf Ziel-Layer verschieben | -| `SSG-LayerOff` | Layer per Klick ausschalten (mehrfach moeglich) | -| `SSG-LayerFreeze` | Layer per Klick einfrieren (mehrfach moeglich) | -| `SSG-FreezeAll` | Alle Layer ausser dem angeklickten einfrieren | -| `SSG-ThawAll` | Alle eingefrorenen Layer auftauen | -| `SSG-LayerOnAll` | Alle ausgeschalteten Layer einschalten | -| `SSG-LayerDelete` | Layer und alle Objekte darauf loeschen (mit Bestaetigung) | - -### SSG_LIB_Commands.lsp - Konfiguration - -| Befehl | Beschreibung | -| --- | --- | -| `SSG_DIM_SWITCH` | Schaltet zwischen 2D- und 3D-Bloecken um | -| `SSG_SPRACHE` | Sprache umschalten (Deutsch/Englisch), persistiert ueber `DXFM_LANG` | - -### tests.lsp - Export und Python-Integration - -| Befehl | Beschreibung | -| --- | --- | -| `CALLPYTHON` | Python-Skripte via CLI aufrufen, Ausgabe loggen | -| `EXPORTSIVAS` | Daten im Sivas-Format exportieren | -| `EXPORTCSV` | Zeichnungsdaten als CSV exportieren | - -## Kernbibliotheken (Lisp/) - -| Datei | Beschreibung | -| --- | --- | -| `ssg_core.lsp` | Kernel: Umgebung, Layer-Ops, Block-Ops, Attribut-Ops, Fehlerbehandlung | -| `ssg_lang.lsp` | Sprachumschaltung Deutsch/Englisch (`ssg-text`, `ssg-textf`, `*ssg-lang*`) | -| `ssg_dialog.lsp` | Dialog-Vorlagen: Slide-Preview, Modul-Dialog, Block-Einfuegesequenz | -| `ssg_layer.lsp` | Layer-Verwaltungsbefehle | -| `ssg_load.lsp` | Loader: Laedt alle SSG-Bibliotheken in korrekter Reihenfolge | -| `on_start.lsp` | Startup-Skript: Setzt Umgebung und laedt Libraries | +Details und die Core-Ladereihenfolge: siehe `CLAUDE.md` Abschnitt "Lademechanismus (Lazy Loading via MNL)". ## Projektstruktur ```text dxfmakros/ -├── Blocks/ # DWG-Bloecke (AN8, SP8, Vertikalboegen, etc.) -├── Lisp/ # AutoLISP-Makros und Kernbibliotheken -├── bin/ # Hilfs-Skripte (setenv, create_tests, etc.) -├── cfg/ # Konfigurationsdateien (export.cfg, block_suffix.cfg) -├── data/ # Quelldaten (JSON, DXF) - nicht im Git -├── dcl/ # DCL-Dialogdefinitionen (kreisel_edit.dcl) -├── doc/ # Dokumentation und Referenz-DXFs -├── examples/ # Beispieldateien -├── lib/ # Python-Skripte (export_csv.py, etc.) -├── logs/ # Logdateien - nicht im Git -├── menu/ # BricsCAD-Menudefinition (SSG_LIB.mnu) +├── 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, Entwicklungsplan +├── 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 @@ -181,33 +87,34 @@ dxfmakros/ ## Umgebungsvariablen +Werden via `bin/setenv.bat` gesetzt. Wichtigste: + | Variable | Beschreibung | | --- | --- | | `DXFMAKRO` | Wurzelverzeichnis des Projekts | -| `DXFM_BLOCKS` | Pfad zum Blocks-Verzeichnis | -| `DXFM_LISP` | Pfad zu den LISP-Dateien | -| `DXFM_RESULTS` | Pfad fuer DXF-Exporte | -| `DXFM_BIN` | Skriptverzeichnis | -| `DXFM_LIB` | Python-Quellcode | -| `DXFM_CFG` | Konfigurationsdateien | -| `DXFM_TESTS` | Testverzeichnis | -| `DXFM_DATA` | Datenverzeichnis | +| `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` | -| `BRICSCAD` | Pfad zur BricsCAD-Executable | - -## Einrichtung - -1. `bin\setenv.bat` ausfuehren (setzt alle Umgebungsvariablen) -2. BricsCAD starten - `on_start.lsp` laedt alle Libraries automatisch via `startup.scr` -3. Menu `SSG_LIB` nutzen oder Befehle in der Kommandozeile ausfuehren +| `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\create_tests.bat +bin\run_tests.bat --lisp ``` -Erzeugt eine Test-DXF, fuehrt Kreisel-Einfuege- und Exportbefehle aus, und validiert die Ergebnisse gegen Referenzdateien in `tests/references/`. +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 Themen in `doc/` (u.a. `variofoerderer.md`, `translate.md`, `csv-export.md`, `Entwicklungsplan.md`, `faq.md`, `kommandos.md`). ## Lizenz