[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 <noreply@anthropic.com>
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user