Files
dxfmakros/doc/kommandos.md
T
s.ayadi 1a34a12ab4 [ADD] Testanlage test_system als Nachbau-Vorlage fuer sps_skel
tests/testdata/test_system.json aus sps_skel/data/test_system.dxf
(dxf_anlage_export.py --projekt TestSystem): 9 Kreisel, 10 Separatoren,
BTMT Beladung, SC Entladung. Treiber tests/test_test_system.lsp
(TEST_TEST_SYSTEM, Menue Tests -> Testanlage test_system) nutzt
dematic_arvato:bau-datei, in alltests.json aktiv (save dxf).

[FIX] dxf_anlage_export.py: doppelte Kreisel-IDs (Kreisel einzeln gebaut,
NUMMER beginnt mehrmals bei 1) bekommen die naechste freie Nummer, mit
Hinweis + Test.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 10:51:52 +02:00

306 lines
19 KiB
Markdown

# Kommandouebersicht
Diese Seite listet alle Kommandos des Projekts auf einen Blick:
1. [BricsCAD-Befehle (AutoLISP)](#1-bricscad-befehle-autolisp) - an der BricsCAD-Kommandozeile einzugeben
2. [Test-Befehle in BricsCAD](#2-test-befehle-in-bricscad)
3. [Batch-/Shell-Skripte (`bin/`)](#3-batch-shell-skripte-bin)
4. [Python-Kommandozeilen (`lib/`)](#4-python-kommandozeilen-lib)
5. [Python-Tests (`pytest`)](#5-python-tests-pytest)
Ausfuehrliche Beschreibungen stehen in `Lisp/README.md`, `doc/variofoerderer.md`,
`doc/tools.md` (set_einfuegepunkt/set_koords), `doc/dbg2lsp.md`, `doc/csv-export.md`
und `doc/LispTests.md`. Diese Seite ist nur der Einstieg.
**Voraussetzung fuer alle BricsCAD-Befehle**: Menue `menu/SSG_LIB.mnu` einmalig per
`_MENULOAD` geladen (siehe `CLAUDE.md`, "Menue einrichten"). Die MNL laedt die Module
dann beim Start. Befehle, die nicht im Menue stehen, lassen sich trotzdem an der
Kommandozeile aufrufen, sofern ihr Modul geladen ist - sonst vorher
`(ssg-ensure "Modulname")` eingeben.
---
## 1. BricsCAD-Befehle (AutoLISP)
Gross-/Kleinschreibung spielt an der Kommandozeile keine Rolle.
### ILS Kreisel / Eckrad (`KreiselInsert.lsp`)
| Befehl | Beschreibung |
|---|---|
| `KreiselInsert` | Kreisel einfuegen: Position und Parameter (Abstand, Typ, Rotation, Hoehe) manuell eingeben |
| `KreiselConnect` | Kreisel zwischen zwei gewaehlten Punkten einfuegen (Abstand und Drehung aus den Punkten) |
| `KreiselQuick` | Kreisel schnell mit Standardwerten (horizontal) einfuegen |
| `KreiselEdit` | Bestehenden Kreisel per Dialog (`kreisel_edit.dcl`) bearbeiten und neu aufbauen |
| `KreiselRedraw` | Kreisel aus seinen Block-Attributen neu zeichnen (z.B. mit neuem Abstand) |
| `KreiselParams` | Aktuelle Kreisel-Parameter anzeigen |
| `KreiselLabelSetup` | Beschriftung einstellen (Hoehe, Farbe, Abstand, Schriftart) |
| `KreiselLabelPos` | Versatz der Beschriftung (dx/dy) einstellen |
| `KreiselLabelHoehe` | Texthoehe der Beschriftung einstellen |
| `ILS_Eckrad` | Eckrad an einem Tangentenpunkt mit Richtung einfuegen |
### VarioFoerderer (`VarioFoerderer.lsp` -> `vf_core`/`vf_standard`/`vf_etage`/`vf_linienzug`/`vf_spec`)
| Befehl | Beschreibung |
|---|---|
| `FOERDERANLAGE` / `VarioFoerderer` | Hauptbefehl, fragt den Anlagentyp (Standard/Etage/Linienzug) ab |
| `StandardVarioFoerderer` | Standardtyp (AS/ES 90 Grad), Werte per DCL-Dialog |
| `StandardVarioFoerderer3D` | Standardtyp aus einer gewaehlten 3D-Linie |
| `EtageVarioFoerderer` | Etagentyp (AS/ES 30 Grad), Werte per DCL-Dialog |
| `EtageVarioFoerderer3D` | Etagentyp aus einer gewaehlten 3D-Linie |
| `LinienzugVarioFoerdererManuell` | Streckengruppe, Modus 1 (manuelle Eingabe, Punkte klicken) |
| `LinienzugVarioFoerdererZielhoehe` | Streckengruppe, Modus 2 (3D-Objekte + Ziel-Hoehe, Randwert-Solver) |
| `LinienzugVarioFoerdererStueckweise` | Streckengruppe, Modus 3 (3D-Objekte stueckweise, in Arbeit) |
| `QcLinieMitGf` | Streckengruppe Modus 4 (QC-Linie mit GF, automatische Auf-Ab-Berechnung); Menue unter Gefaellestrecke |
| `QcLinieMitGfUForm` | Streckengruppe Modus 5 (QC-Linie mit GF und U-Form); Menue unter Gefaellestrecke |
| `VARIOFOERDERER_EDIT` | VF_n-Block editieren (dispatcht per XDATA-Marker auf Standard/Etage/Linienzug); auch per Doppelklick |
| `VARIOFOERDERER_NACHRUESTEN` / `VF_NACHRUESTEN` | Altbestand-VF_n-Bloecke ohne `SSG_VF_EDIT`-Marker editierbar machen |
| `Vario_Kette_Merge` | Mehrere einzeln gebaute VF_n-Bloecke ab einem Start-Baustein zu einem Gesamt-Block zusammenfuehren |
| `VF_SEKTION_RESTORE` | Aufgebrochene Linienzug-Kette aus der XDATA der losen Objekte wieder zu einem Block mit Journal zusammensetzen |
| `VF_WIZARD_AN` / `VF_WIZARD_AUS` | Linienzug-Fragen per DCL-Assistent (Standard) bzw. per Konsole stellen |
| `VF_SPEC_BAU` | Linienzug-Ketten ohne Dialog aus einer Spec-Datei bauen (`DXFM_VF_SPEC`, Default `tests/testdata/hundm05.json`) |
| `VFL_KS_DIAG` | Diagnose: inneren Aufbau eines Blocks anzeigen (Lage von KS_EIN/KS_AUS) |
### Gefaellestrecke (`Gefaellestrecke.lsp`)
| Befehl | Beschreibung |
|---|---|
| `GEFAELLESTRECKE` | Fragt den Eingabemodus per Konsole ab |
| `GEFAELLESTRECKE_EINFACH` | Modus 1: Werteingabe per DCL-Dialog |
| `GEFAELLESTRECKE_3DLINIE` | Modus 2: aus einer 3D-Linie |
| `GEFAELLESTRECKE_LINIENZUG` | Modus 3: aus einem Linienzug (LINE + ARC) |
| `GEFAELLESTRECKE_EDIT` | GF_n-Block editieren (Dialog vorbelegt, Neuaufbau); auch per Doppelklick |
### ILS-Zusatzmodule, Sensoren, Ein-/Ausgang (`SSG_LIB_Commands.lsp`)
| Befehl | Beschreibung |
|---|---|
| `ILS_BTMT_Beladung` | BTMT-Beladung wiederholt einfuegen (Drehung interaktiv) |
| `ILS_BTMT_Entladung` | BTMT-Entladung wiederholt einfuegen |
| `ILS_EINGANG_INSERT` / `ILS_AUSGANG_INSERT` | Eingang-/Ausgang-Symbol frei platzieren |
| `ILS_SCANNER_INSERT` | Scanner einfuegen |
| `ILS_SEPARATOR_INSERT` | Separator einfuegen |
| `TEF_FOERDERER_LINIE` (`TEFInsert.lsp`) | Linie zwischen zwei Punkten zeichnen und mit 1000-mm-TEF-Geraden belegen |
### Omniflo (`OmniModulInsert.lsp`)
| Befehl(e) | Beschreibung |
|---|---|
| `OMNI_LOAD` | Omniflo-Komponentendaten laden |
| `OMNI_INFO_BOGEN` / `OMNI_INFO_WEICHE` | Daten eines Bogens / einer Weiche anzeigen |
| `OMNI_APB60_90`, `OMNI_APB_630_90`, `OMNI_APB_630_45`, `OMNI_APB_550_675`, `OMNI_APB_550_225`, `OMNI_APB_650_180` | Boegen einfuegen (Dialog `omniflo_boegen.dcl`) |
| `OMNI_AP60`, `OMNI_AP110`, `OMNI_APG110` | Gerade Profile einfuegen |
| `OMNI_W90_Einfach`/`_Doppel`/`_Dreiwege` | Weichen 90 Grad (Dialog `omniflo_weichen.dcl`) |
| `OMNI_W45_Einfach`/`_Doppel`/`_Dreiwege` | Weichen 45 Grad |
| `OMNI_WP_Einfach`/`_Doppel`/`_Dreiwege` | Parallelweichen |
| `OMNI_WK_Einfach`/`_Doppel`/`_Dreiwege` | Weichenkoerper |
| `OMNI_WKomb_Delta_1400`, `OMNI_WKomb_Delta_1600`, `OMNI_WKomb_Star` | Weichenkombinationen (Delta, Stern) |
| `OMNI_APBW_R400_45_140`, `OMNI_APBW_R400_675_260`, `OMNI_APBW_R550_45_77`, `OMNI_APBW_R550_45_194`, `OMNI_APBW_R550_225_360`, `OMNI_APBW_R550_225_410A`/`B`/`C`, `OMNI_APBW_R550_675_58`/`_125`/`_208`/`_360`, `OMNI_APBW_R650_90_300`, `OMNI_APBW_R750_90_200` | Boegen fuer Weichen (fest, ohne Dialog) |
| `OMNI_TEF_UmlenkL`/`R`, `OMNI_TEF_AntriebL`/`R`, `OMNI_TEF_Gerade` | TEF-Elemente (fest, ohne Drehung) |
| `OMNI_STOPPER`, `OMNI_SCANNER`, `OMNI_BUERSTENBREMSE` | Anbaugruppen |
| `OMNI_TV_W_W`, `OMNI_TV_W_AP`, `OMNI_TV_W_AP60`, `OMNI_TV_W_AP110`, `OMNI_TV_W_AP110_W`, `OMNI_TV_50`, `OMNI_TV_80`, `OMNI_TV_ENDPLATTE`, `OMNI_TV_ANSCHLAG`, `OMNI_TV_MUFFE`, `OMNI_TV_A_AP110_AP60`, `OMNI_TV_A_AP60_ST`, `OMNI_TV_A_AP110_ST`, `OMNI_TV_SW_II_SW_SW`, `OMNI_TV_SW_III_AP110`, `OMNI_TV_SW_III_AP110_SW`, `OMNI_TV_SW_IV_AP60`, `OMNI_TV_SW_IV_ST` | Verbinder |
| `OMNI_LADESCHLEIFE_AP110` | Ladeschleife (Dialog `omniflo_ladeschleifen.dcl`) |
| `OMNI_KettenFoerderer` | Platzhalter (noch ohne Funktion) |
| `OMNI_EDIT` | Omniflo-Element per Dialog bearbeiten; auch per Doppelklick |
### Geruest (`GeruestInsert.lsp`)
| Befehl | Beschreibung |
|---|---|
| `GERUEST` | Geruest-Dialog (Bereich frei waehlbar) |
| `GERUEST_SAEULEN` / `GERUEST_ROHRABHAENGER` / `GERUEST_WANDBEFESTIGUNG` | Derselbe Dialog, im jeweiligen Bereich geoeffnet |
| `GERUEST_TRAEGER` | Rohr-Geruest-Traeger: Dialog (`geruest_traeger.dcl`), danach Start-/Endpunkt oder Laenge bis ESC/Enter |
| `GERUEST_TRAEGER_BESCHRIFTEN` | Alle Traeger der Zeichnung neu beschriften, verwaiste Beschriftungen entfernen |
### TRO und Connections (`Tro_Edit.lsp`, `Connection_Edit.lsp`)
| Befehl | Beschreibung |
|---|---|
| `TRO_INSERT` | TRO-Marker (`TRO_SYM_<Typ>`) einfuegen und ID/TYPE setzen (Blockdefinition muss existieren) |
| `TRO_EDIT` | ID/TYPE eines TRO-Markers per Dialog aendern |
| `CONNECTION_INSERT` | Verbindungspfeil (Fluss) zwischen zwei Elementen zeichnen |
| `CONNECTION_EDIT` | Quelle/Ziel einer Verbindung aendern |
### Export und IDs (`export.lsp`, `ssg_id.lsp`, `count_sep_scan.lsp`, `check_hoehen.lsp`)
| Befehl | Beschreibung |
|---|---|
| `EXPORTSIVAS` | Sivas-Export-CSV mit Summierungszeilen (ruft `lib/export_sivas.py`) |
| `EXPORTCSV` | Einfache Item-Liste aller Bloecke inkl. Bounding-Box/Planquadrat (ruft `lib/export_csv.py`) |
| `CSV_EXPORT_KONFIG` | Export-Einstellungen per Dialog (u.a. gefrorene Layer ausschliessen) |
| `OMNI_UPDATE_ATTRIBS` | HOEHE und DREHUNG aller Omniflo-Elemente aus der Geometrie aktualisieren |
| `IDSCHECK` | Alle Bloecke auf doppelte IDs pruefen und korrigieren |
| `IDGENERATE` | Gewaehltem Block eine neue ID zuweisen |
| `ZAEHLE_SEP_SCAN` | Scanner/Separatoren je Kreisel/VF/GF zaehlen und in ANZAHL_SCANNER/ANZAHL_SEPARATOR schreiben (laeuft auch automatisch vor jedem Export) |
| `HOEHEN_CHECK` | Hoehen von Kreiseln/VF/GF messen und in HOEHE/HOEHE_VON_mm/HOEHE_BIS_mm/MONTAGEHOEHE_m schreiben |
| `CALLPYTHON` (`external_call.lsp`) | Test des LISP->Python-Aufrufs (`lib/testpycall.py`) |
### Konfiguration, Planquadrate, Doppelklick
| Befehl | Beschreibung |
|---|---|
| `SSG_DIM_SWITCH` | Globalen Modus 2D/3D umschalten (`DXFM_DIM`) |
| `SSG_DIM_ALL_2D` / `SSG_DIM_ALL_3D` | Alle VF_n-/GF_n-Bloecke der Zeichnung nach 2D bzw. 3D umbauen |
| `SSG_SPRACHE` | Sprache Deutsch/Englisch waehlen (`DXFM_LANG`) |
| `DRAW_PLANQUADRATE` | Planquadrat-Raster (Block `ZZ_PLANQUADRATE`) zeichnen bzw. neu aufbauen |
| `DELETE_PLANQUADRATE` | Planquadrat-Raster entfernen |
| `PLANQUADRATE_TOGGLE` | Raster an/aus (zeichnen, falls keins existiert, sonst entfernen) |
| `SSG_BLOCKEDIT` | Doppelklick-/Kontextmenue-Dispatcher: Kreisel, Omniflo, GF_*, VF_*, GR_*, TRO_* auf den passenden Edit-Befehl |
| `EATTEDIT` | Ueberschreibt den nativen Befehl, leitet an `SSG_BLOCKEDIT` weiter (Fallback `_.EATTEDIT`) |
### Layer-Werkzeuge (`ssg_layer.lsp`)
| Befehl | Beschreibung |
|---|---|
| `SSG-LayerSet` | Layer eines angeklickten Objekts aktiv setzen |
| `SSG-LayerInfo` | Layer eines Objekts anzeigen |
| `SSG-LayerMove` | Objekte auf einen anderen Layer verschieben |
| `SSG-LayerCopy` | Objekte auf einen anderen Layer kopieren |
| `SSG-LayerMoveType` | Alle Objekte eines Typs (Referenzobjekt) vom gleichen Layer auf einen neuen Layer verschieben |
| `SSG-LayerOff` / `SSG-LayerFreeze` | Layer per Anklicken aus-/einfrieren |
| `SSG-FreezeAll` | Alle Layer ausser dem aktiven einfrieren |
| `SSG-ThawAll` / `SSG-LayerOnAll` | Alle Layer auftauen / einschalten |
| `SSG-LayerDelete` | Alle Objekte eines Layers und den Layer loeschen (mit Sicherheitsabfrage) |
### Block-Pflege und Diagnose (Entwickler)
Arbeiten auf den Block-DWGs in `data/ils` (Voraussetzung `DXFM_DATA`).
| Befehl | Beschreibung |
|---|---|
| `ILS_ATTR_SYNC` (`addattribute.lsp`) | ATTDEFs der DWGs mit `data/ils/allocations.json` abgleichen; Modus Ergaenzen/Ersetzen |
| `ILS_ATTR_REPLACE` | Direkt Modus "Ersetzen" (Sicherheitsfrage bleibt) |
| `ILS_ATTR_COLLECT` (`collect_attributes.lsp`) | Aktuelle ATTDEF-Werte aller DWGs nach `allocations_collected.json` schreiben |
| `ILS_BLOCK_LIST` (`list_blocks.lsp`) | Sub-Block-Definitionen aller DWGs nach `blocks_collected.json` schreiben (Kollisionen 2D/3D finden) |
| `ILS_BLOCK_PURGE` (`purge_blocks.lsp`) | Unbenutzte Bloecke/Layer in allen DWGs entfernen |
| `KS_PRUEFEN` (`ks_pruefung.lsp`) | KS_EIN/KS_AUS der 2D- gegen die 3D-Variante vergleichen, Ergebnis als CSV |
| `MenuInventory` (`menu-inventory.lsp`) | Menuegruppen, Plugins und Startdateien von BricsCAD auflisten |
---
## 2. Test-Befehle in BricsCAD
Aus dem Menue "Tests" bzw. der Kommandozeile; Details in `doc/LispTests.md`.
| Befehl | Beschreibung |
|---|---|
| `SSG_RUN_ALL_TESTS` | Alle in `tests/alltests.json` aktivierten Szenarien ausfuehren (fragt den Modus ab) |
| `SSG_RUN_ALL_TESTS_EXPORT` | Dito, Automatik: speichern + CSV/Sivas-Export + schliessen |
| `SSG_RUN_ALL_TESTS_OFFEN` | Dito, Kontrolle: Zeichnungen bleiben offen, kein Export |
| `TEST_EXPORT_ALL` | Jede Zeichnung aus `tests/output/` oeffnen und exportieren |
| `TEST_UNIT` | File- und zeichnungsfreie Unit-Tests (`tests/test_unit.lsp`), Ergebnis `tests/output/unit_results.txt` |
| `TEST_VF_SPEC` | Unit-Test Spec-Uebersetzer (`vsp-journal`) |
| `TEST_VFL_SCHEMA` | Unit-Test Glied-Schema des Linienzugs |
| `TEST_KREISEL` | Kreisel-Szenario |
| `TEST_FOERDERER` | VarioFoerderer-Szenario |
| `TEST_GEFAELLESTRECKE` | Gefaellestrecke-Szenario |
| `TEST_LINIENZUG` / `TEST_LINIENZUG_STUFE2` | Linienzug-Szenarien |
| `TEST_OMNIFLO` | Alle Omniflo-Testbloecke einfuegen |
| `TEST_OMNIFLO_STRECKE` | Omniflo-Streckenzug aufbauen |
| `TEST_HM_RECFORMAT` (`_2D`/`_3D`) | Echte HundM-Aufzeichnungen per Journal-Replay nachbauen |
| `TEST_HUNDM05` (`_2D`/`_3D`) | HundM05-Anlage aus der Spec bauen |
| `TEST_MUBEA` | Mubea-Nachbau aus `tests/testdata/mubea.json` |
| `TEST_DEMATIC_ARVATO` | Dematic/Arvato-Nachbau (Flowpuffer/Kreisel) |
| `TEST_SHOWROOM_ILS` | ILS-3.0-Showroom-Nachbau (Kreisel, Gefaellestrecken; Hoehen noch Platzhalter) |
| `TEST_TEST_SYSTEM` | Testanlage `test_system` nachbauen (9 Kreisel, Separatoren, BTMT) - Vorlage fuer sps_skel |
---
## 3. Batch-/Shell-Skripte (`bin/`)
Alle Skripte rufen zuerst `setenv.bat` (bzw. `setenv.sh`) auf.
| Skript | Beschreibung |
|---|---|
| `setenv.bat` / `setenv.sh` | Umgebungsvariablen setzen (`DXFMAKRO`, `DXFM_LISP`, `DXFM_DATA`, `BRICSCAD` ...); `.sh` muss gesourct werden |
| `start_briscad.bat` | Umgebung setzen und BricsCAD starten |
| `get_cmd.bat` / `get_cmd.sh` | Shell mit gesetzter Umgebung oeffnen |
| `install_py.bat` / `install_py.sh` | `.venv` anlegen und `requirements.txt` installieren (nur wenn noch nicht vorhanden) |
| `activate_venv.bat` / `activate_venv.sh` | `.venv` aktivieren, Python-Version und Pakete anzeigen |
| `run_tests.bat` | Testausfuehrung, siehe unten |
| `create_tests.bat` | Kompletter ILS-Testlauf: Basis-DXF erzeugen, BricsCAD mit `ILS_test.scr`, Ergebnisse validieren |
| `set_einfuegepunkt.bat [schalter]` | Wrapper fuer `lib/set_einfuegepkt.py` (siehe `doc/tools.md`) |
| `set_coords.bat [schalter]` | Wrapper fuer `lib/set_koords.py` (siehe `doc/tools.md`) |
| `dbg2lsp.bat [argumente]` | Wrapper fuer `lib/dbg2lsp.py` (siehe `doc/dbg2lsp.md`) |
| `show_exportcsv.bat [csv] [flow] [mflow] [track]` | Export-CSV mit sps_skel als SVG darstellen; `flow` ohne VF/GF-Einzelbausteine, `mflow` Materialfluss-Graph, `track` Bahnzusammenhang (beide brauchen Graphviz) |
| `dxf_anlage_export.bat <dxf> <output.json> [--projekt NAME]` | Wrapper fuer `lib/dxf_anlage_export.py` |
| `dxf_scan_components.bat <dxf> <data_dir> <output.json> [--fenster X0 Y0 X1 Y1] [--projekt NAME]` | Wrapper fuer `lib/dxf_scan_components.py` |
| `dxf_vf_abbild.bat <dxf> [--spec S] [--json J] [--referenz R] [--schreibe-referenz] [--praefix VF_,GF_]` | Wrapper fuer `lib/dxf_vf_abbild.py` |
### `run_tests.bat`
```
bin\run_tests.bat --lisp BricsCAD headless (/b tests\test_unit.scr), TEST_UNIT, Auswertung unit_results.txt
bin\run_tests.bat --check [test_xyz.py] pytest-Validierung (alle oder eine Datei)
bin\run_tests.bat --diff_references [datei] CSVs tests\reference vs. tests\output vergleichen, bei Unterschieden meld
bin\run_tests.bat Hilfe
```
---
## 4. Python-Kommandozeilen (`lib/`)
Aufruf mit aktivierter `.venv` (bzw. ueber `setenv`, damit `DXFM_*` gesetzt sind).
`python <skript> --help` zeigt bei den argparse-Skripten alle Optionen.
### Export (normalerweise von `EXPORTSIVAS`/`EXPORTCSV` aufgerufen)
| Aufruf | Beschreibung |
|---|---|
| `python export_sivas.py <export_raw.json> <data_dir> <output.csv> [--mit-bezeichnung]` | Sivas-CSV mit Summierungszeilen, zusaetzlich `<output>_zusammengefasst.csv` |
| `python export_csv.py <export_raw.json> <data_dir> <output.csv>` | Einfache Item-Liste (Planquadrat, Bounding-Box, Nachbarn, Merkmale) |
| `python export_graph.py <export.csv> [<ausgabe-basispfad>]` | Materialfluss-Graph aus dem CSV-Export als `.json`, `.dot` und `.mmd` |
Reine Bibliotheken ohne eigene Kommandozeile: `export_blockpatterns.py`,
`export_neighbors.py`, `export_planquadrat.py`, `merkmalstamm.py`, `sivas_mapping.py`,
`omniflo_utils.py`, `vf_linienzug_grammatik.py`.
### Omniflo-DXF-Aufbereitung
| Aufruf | Beschreibung |
|---|---|
| `python set_einfuegepkt.py [--boegen] [--weichen45] [--weichen90] [--weichenkoerper] [--weichen-parallel] [--delta] [--dreifachweiche] [--sternweiche] [--number SIVASNR] [--show-omniflo]` | `$INSBASE` der Omniflo-DXFs setzen |
| `python set_koords.py [--k1set] [--k2set] [--k3set] [--k4set] [--set-all] [--force] [--test] [--number SIVASNR] [--show-omniflo]` | KS-Bloecke K1-K4 in die Omniflo-DXFs setzen |
| `python split_block_library.py` | `data/block_libraries/ils_library.dxf` in einzelne DXFs je Block aufteilen |
### VarioFoerderer-Journal und Spec
| Aufruf | Beschreibung |
|---|---|
| `python vf_journal_export.py <dxf> <output.json> [--csv <sivas.csv>] [--kein-startpunkt-fix]` | `SSG_VF_EDIT`-Journale der VF_n-Bloecke als Frage-Antwort-Protokoll (z.B. `tests/testdata/hm_recformat.json`) |
| `python vf_spec_export.py <protokoll.json> <spec.json>` | Protokoll in eine Spec uebersetzen (z.B. `tests/testdata/hundm05.json`) |
| `python dxf_vf_abbild.py <dxf> [--spec S] [--json J] [--referenz R] [--schreibe-referenz] [--praefix VF_,GF_]` | Attribut-/Bausteinabbild der VF_/GF_-Bloecke; `--referenz` vergleicht (Exit 1 bei Abweichung) |
| `python dxf_anlage_export.py <dxf> <output.json> [--projekt NAME]` | Mit unseren Makros GEBAUTE (und von Hand nachbearbeitete) Anlage aus der Zeichnung in Nachbau-Testdaten zurueckschreiben (Gegenstueck zu `dxf_scan_components.py`); erzeugt z.B. `tests/testdata/dematic_arvato.json` |
| `python dump_vf_wrapper_inhalt.py <dxf-oder-dwg>` | Diagnose: Sub-INSERTs je VF_n/GF_n-Wrapper in Baureihenfolge |
| `python dump_vf_kette_inhalt.py <spec.json> [<export_raw.json>]` | Diagnose: Glied-Folge der Spec gegen die tatsaechliche Separatorliste |
### Fremdzeichnungen auswerten
| Aufruf | Beschreibung |
|---|---|
| `python dxf_scan_components.py <dxf> <data_dir> <output.json> [--fenster X0 Y0 X1 Y1] [--projekt NAME]` | ILS-/Omniflo-Komponenten einer fremden Zeichnung als Nachbau-JSON erkennen |
| `python dxf_abbild.py <dxf> <output.json> [--fenster X0 Y0 X1 Y1] [--max-tiefe N] [--ohne-geometrie-container]` | Getreue Abbildung aller Bauteile (ohne Interpretation) als JSON |
| `python extract_polylines.py <dxf> <output.json> [--layer Z-6]` | LWPOLYLINEs eines Layers mit Stuetzpunkten und Laengen als JSON |
### Entwickler-Tools
| Aufruf | Beschreibung |
|---|---|
| `python dbg2lsp.py <datei.lsp> --method NAME [--recursive] [--max-depth N] [--search-dir D] [--exclude NAME] [--add-open DATEI METHODE] [--dbg-file F] [--dbg-envvar V] [--force] [--dry-run]` | LISP-Funktionen mit `ssg_dbg.lsp`-Aufrufen instrumentieren (siehe `doc/dbg2lsp.md`) |
| `python testpycall.py [<log_dir>]` | Gegenstueck zu `CALLPYTHON` |
---
## 5. Python-Tests (`pytest`)
```
pytest tests/ alle Python-Tests
pytest tests/test_vf_spec.py einzelne Datei
bin\run_tests.bat --check dasselbe ueber das Batch-Skript
```
Die Szenario-Tests (`test_kreisel.py`, `test_foerderer.py`, `test_hundm05.py` ...)
validieren die Ausgaben der zugehoerigen BricsCAD-Testbefehle in `tests/output/`
gegen `tests/reference/`; reine Python-Tests wie `test_vf_spec.py`,
`test_vf_journal_grammatik.py` oder `test_export_graph.py` laufen ohne BricsCAD.