From f1583d2d4136e0e7fd3916789fccad38ca65d54e Mon Sep 17 00:00:00 2001 From: Samer Ayadi Date: Tue, 6 Oct 2026 17:08:16 +0200 Subject: [PATCH] [ADD] doc/kommandos.md: Kommandouebersicht (BricsCAD-Befehle, Test-Befehle, bin-Skripte, Python-Kommandozeilen, pytest); [CHANGE] menu/SSG_LIB.cui: MenuMacro-UIDs von BricsCAD neu nummeriert Co-Authored-By: Claude Opus 5.5 --- doc/kommandos.md | 295 +++++++++++++++++++++++++++++++++++++++++++++++ menu/SSG_LIB.cui | 38 +++--- 2 files changed, 314 insertions(+), 19 deletions(-) create mode 100644 doc/kommandos.md diff --git a/doc/kommandos.md b/doc/kommandos.md new file mode 100644 index 0000000..5419396 --- /dev/null +++ b/doc/kommandos.md @@ -0,0 +1,295 @@ +# 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 | +| `LinienzugVarioFoerderer` | Linienzug, fragt Modus 1/2/3 ab | +| `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_`) 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) | + +--- + +## 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) | + +### `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 --help` zeigt bei den argparse-Skripten alle Optionen. + +### Export (normalerweise von `EXPORTSIVAS`/`EXPORTCSV` aufgerufen) + +| Aufruf | Beschreibung | +|---|---| +| `python export_sivas.py [--mit-bezeichnung]` | Sivas-CSV mit Summierungszeilen, zusaetzlich `_zusammengefasst.csv` | +| `python export_csv.py ` | Einfache Item-Liste (Planquadrat, Bounding-Box, Nachbarn, Merkmale) | +| `python export_graph.py []` | 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 [--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 in eine Spec uebersetzen (z.B. `tests/testdata/hundm05.json`) | +| `python dxf_vf_abbild.py [--spec S] [--json J] [--referenz R] [--schreibe-referenz] [--praefix VF_,GF_]` | Attribut-/Bausteinabbild der VF_/GF_-Bloecke; `--referenz` vergleicht (Exit 1 bei Abweichung) | +| `python dump_vf_wrapper_inhalt.py ` | Diagnose: Sub-INSERTs je VF_n/GF_n-Wrapper in Baureihenfolge | +| `python dump_vf_kette_inhalt.py []` | Diagnose: Glied-Folge der Spec gegen die tatsaechliche Separatorliste | + +### Fremdzeichnungen auswerten + +| Aufruf | Beschreibung | +|---|---| +| `python dxf_scan_components.py [--fenster X0 Y0 X1 Y1] [--projekt NAME]` | ILS-/Omniflo-Komponenten einer fremden Zeichnung als Nachbau-JSON erkennen | +| `python dxf_abbild.py [--fenster X0 Y0 X1 Y1] [--max-tiefe N] [--ohne-geometrie-container]` | Getreue Abbildung aller Bauteile (ohne Interpretation) als JSON | +| `python extract_polylines.py [--layer Z-6]` | LWPOLYLINEs eines Layers mit Stuetzpunkten und Laengen als JSON | + +### Entwickler-Tools + +| Aufruf | Beschreibung | +|---|---| +| `python dbg2lsp.py --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 []` | 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. diff --git a/menu/SSG_LIB.cui b/menu/SSG_LIB.cui index 369b401..50aeee5 100644 --- a/menu/SSG_LIB.cui +++ b/menu/SSG_LIB.cui @@ -734,55 +734,55 @@ ^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_hundm05.lsp")) (c:TEST_HUNDM05) - + Dematic/Arvato Flowpuffer (Vorlage) ^C^C(load (strcat (getenv "DXFMAKRO") "/tests/test_dematic_arvato.lsp")) (c:TEST_DEMATIC_ARVATO) - + KS 2D/3D pruefen (CSV) ^C^C(load (strcat (getenv "DXFMAKRO") "/Lisp/ks_pruefung.lsp")) KS_PRUEFEN - + Kreisel bearbeiten (ssg-ensure "KreiselInsert") KreiselEdit - + Omniflo Element bearbeiten (ssg-ensure "OmniModulInsert") OMNI_EDIT - + Gefaellestrecke bearbeiten (ssg-ensure "Gefaellestrecke") GEFAELLESTRECKE_EDIT - + VarioFoerderer bearbeiten (ssg-ensure "VarioFoerderer") VARIOFOERDERER_EDIT - + TRO-Marker bearbeiten (ssg-ensure "Tro_Edit") TRO_EDIT - + Verbindung bearbeiten (ssg-ensure "Connection_Edit") CONNECTION_EDIT - + SSG Bearbeiten (Auto) (ssg-ensure "SSG_LIB_Commands") SSG_BLOCKEDIT @@ -1636,60 +1636,60 @@ Dematic/Arvato Flowpuffer (Vorlage) - + KS 2D/3D pruefen (CSV) - + - + POP501 SSG_LIB Edit Context Kreisel bearbeiten - + Omniflo Element bearbeiten - + Gefaellestrecke bearbeiten - + VarioFoerderer bearbeiten - + TRO-Marker bearbeiten - + Verbindung bearbeiten - + SSG Bearbeiten (Auto) - +