Files
dxfmakros/doc/kommandos.md
T
m.stangl 823dc6728d [CHANGE] Streckengruppe-Menue in Werte-manuell/Zielhoehe/Stueckweise aufgeteilt, QC-Linien unter Gefaellestrecke verschoben, Linienzug-Wizard "Naechstes Element" neu sortiert (GF vor VF) mit eigenem Abschliessen-Knopf statt Kettenende-Radio
Lisp/vf_core.lsp: fuenf eigene Menue-Wrapper (LinienzugVarioFoerdererManuell/-Zielhoehe/-Stueckweise, QcLinieMitGf/-UForm) ersetzen den alten interaktiven Modus-Dialog; vfc-dialog-linienzug-modus-waehlen entfaellt.
dcl/vf_linienzug_wizard.dcl + Lisp/vf_linienzug.lsp: "Neue Linie BIS Kettenende" ist kein Radio mehr, sondern eigener Button "OK und Abschliessen" neben "Ok Weiter"; GF-Optionen stehen vor VF-Optionen.
Menue (SSG_LIB.mnu/.cui), lang/*.json, doc/kommandos.md, doc/lisp_methods.md, doc/faq.md nachgezogen.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-08 12:44:36 +02:00

18 KiB

Kommandouebersicht

Diese Seite listet alle Kommandos des Projekts auf einen Blick:

  1. BricsCAD-Befehle (AutoLISP) - an der BricsCAD-Kommandozeile einzugeben
  2. Test-Befehle in BricsCAD
  3. Batch-/Shell-Skripte (bin/)
  4. Python-Kommandozeilen (lib/)
  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)

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 <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 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.