Commit Graph

142 Commits

Author SHA1 Message Date
m.stangl c915a4031f Contextmenü für die Rechte Maustaste eingeführt um Elemente zu bearbeiten 2026-06-15 14:30:55 +02:00
m.stangl b829b7e961 Attribut Winkel war noch nicht unsichtbar 2026-06-15 14:26:49 +02:00
m.stangl 59afa230c3 Alle Attribute entsprechend der Sivasnummer hinzugefügt. Alle als Unsichtbar und Konstant deklariert 2026-06-15 12:52:46 +02:00
m.stangl 2ceea62262 set_attributes.py baut jetzt einen Block der bei Klick alle seine Attribute anzeigt. 2026-06-12 17:57:48 +02:00
m.stangl b9a33def8b Doku der Tools aktualisiert 2026-06-12 17:57:07 +02:00
m.stangl 2f583a96cb Lisp/README.md als Doku der LispFunktionen erneuert. set_attr.py baut jetzt einen einzigen Block der alle Geometrie und die Attribute enthält. 2026-06-12 17:25:22 +02:00
m.stangl 7a13171714 logs/ und results/ zur .gitignore hinzugefuegt
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-12 11:29:18 +02:00
m.stangl 041d292681 Omniflo-Testsuite hinzugefuegt (Python + AutoLISP)
tests/test_omniflo.py (350 Zeilen):
  Python-Tests fuer den Omniflo Bogen/Weiche Export. Testet:
  - Unit-Tests fuer build_bogen_merkmale / build_weiche_merkmale gegen
    Testdefinitionen aus omniflo_tests.json (kein BricsCAD erforderlich)
  - Merkmale-Werte gegen den JSON-Katalog (omniflo_boegen/weichen.json)
  - Korrekte Anzahl und Reihenfolge der Elemente in process_blocks()
  - CSV-Ausgabeformat (Header, Spaltenanzahl, Merkmale als JSON)
  - Integrationstest: liest eine tatsaechliche CSV aus einem BricsCAD-
    Lauf (falls DXFM_TESTOUT gesetzt und Datei vorhanden)
  Importiert direkt aus lib/export_csv.py (build_lookup, process_blocks,
  build_bogen_merkmale, build_weiche_merkmale, load_json).

tests/test_omniflo.lsp (173 Zeilen):
  AutoLISP-Tests fuer omni:insert-bogen und omni:insert-weiche.
  Prueft Block-Einfuegung, Attribut-Setzung (HOEHE, DREHUNG, ARTINR)
  und Fehlerverhalten bei ungueltigen Parametern. Laeuft direkt in
  BricsCAD via (load "tests/test_omniflo.lsp").

tests/testdata/omniflo_tests.json (114 Zeilen):
  Testdaten fuer test_omniflo.py: Definiert Testfaelle fuer Boegen
  (je Winkel: 22.5, 45, 67.5, 90, 180) und Weichen (90°, 45°, koerper,
  parallel) mit erwarteten Merkmale-Feldern und Beispiel-SivasNr.

tests/conftest.py:
  Pytest-Fixtures fuer den Testlauf: data_dir, testdata_dir,
  output_dir und omniflo_lookup (laedt Katalog-JSON falls vorhanden,
  sonst leeres Dict als Fallback).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-12 11:27:08 +02:00
m.stangl 1f2ebe5c86 export_csv.py und omniflo_utils.py bereinigt und korrigiert
lib/export_csv.py:
  - CSV-Header vereinfacht: NachbarIds, Planquadrat und rotation-Spalten
    entfernt (nicht im Sivas-Format benoetigt). Anzahl-Spalte auf festen
    Wert 1 gesetzt.
  - format_planquadrat() entfernt (war unused nach Header-Aenderung).
  - process_blocks(): elem_nr startet bei 0 statt -1 (erster Block war
    mit Nummer -1 ausgegeben worden).
  - build_bogen_merkmale(), build_weiche_merkmale(): KurvenWinkel und
    Radius werden jetzt explizit als float() gecastet, um sicherzustellen
    dass JSON-Werte aus dem Katalog als Zahl und nicht als String landen.
  - Felder nachbarids, planquadrat, rotation aus den item-Dicts entfernt.

lib/omniflo_utils.py:
  - import_element_as_block(): prueft jetzt zuerst ob eine Block-
    definition mit dem Zielnamen in der Quelldatei existiert (erzeugt
    durch set_attributs.py). Falls ja, wird diese direkt importiert
    statt des gesamten Modelspace. Das verhindert doppelte Entities wenn
    set_attributs.py die Geometrie bereits in einen Block gefasst hat.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-12 11:26:41 +02:00
m.stangl 9f78ff7f0a Alle LISP-Module auf ssg-cfg-or umgestellt (hardcodierte Konstanten entfernt)
Alle bisher hart codierten Geometrie-, Farb- und Default-Werte in den
LISP-Modulen werden jetzt ueber ssg-cfg-or aus component_defaults.json
gelesen (mit Fallback auf den bisherigen Wert als Sicherheitsnetz).

Lisp/KreiselInsert.lsp:
  - Geometrie-Konstanten: *kreisel-durchmesser*, *kreisel-pin-abstand*,
    *kreisel-default-laenge*, *kreisel-default-hoehe*, *eckrad-default-hoehe*
  - Beschriftungs-Einstellungen: Texthöhe, Farbe, Abstand
  - Linienfarben (color_linie_1/2, color_pin) fuer Layer/CECOLOR
  - Toleranzen: toleranz_kollinear, toleranz_winkel

Lisp/OmniModulInsert.lsp:
  - Default-Werte fuer HOEHE und DREHUNG beim Einfuegen und Bearbeiten
  - Textgroessen (textHeight, textGap) fuer Vorschau-Dialog
  - Max-Laengen fuer AP60, AP110, APG110

Lisp/VarioFoerderer.lsp:
  - staustrecke-basis, FESTE_HORIZONTAL
  - bogen-winkel Liste (zweifach, in Bibliotheks-Extraktion und Berechnung)
  - gefaelle_winkel (3°) an allen Stellen im Anlagen-Aufbau
  - skalierung_basis fuer Block-Skalierung
  - separator_block_dx/dz, station_block_dx/dz fuer Blockeinfuegung

Lisp/Gefaellestrecke.lsp:
  - Default-Wert fuer deltaL, default_winkel
  - separator_breite fuer Laengenberechnung

Lisp/export.lsp:
  - default_hoehe fuer HOEHE-Attribut-Fallback in Bogen/Weiche/Gerade
  - default_gerade_laenge fuer Laenge-Fallback
  - mm_pro_meter (1000.0) fuer Umrechnung mm->m bei Laengenangaben

Lisp/ssg_dialog.lsp:
  - dialog_preview_bg_color (-18) fuer fill_image Hintergrundfarbe

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-12 11:26:22 +02:00
m.stangl cc301b318e JSON-Konfigurationssystem in ssg_core.lsp eingefuehrt
data/json/component_defaults.json: Neue zentrale Konfigurationsdatei
mit Standardwerten fuer alle Komponenten (kreisel, eckrad, omniflo,
vario, gefaelle, infrastruktur). Bisher waren Konstanten (Masse,
Farben, Toleranzen, Defaults) hart im LISP-Code eingebettet.

Lisp/ssg_core.lsp: JSON-Parser und Config-Zugriff hinzugefuegt:
  - ssg-read-file-lines: Datei zeilenweise einlesen
  - ssg-cfg-trim, ssg-cfg-split-comma: String-Hilfsfunktionen
  - ssg-cfg-parse-value, ssg-cfg-parse-array: JSON-Wert-Parser
    (unterstuetzt String, Zahl, Boolean, Array, null)
  - ssg-cfg-parse-section: JSON-Sektion zu Assoziationsliste parsen
  - ssg-load-config: Laedt component_defaults.json in *ssg-config*
  - ssg-cfg: Wert aus *ssg-config* lesen, nil wenn nicht vorhanden
  - ssg-cfg-or: Wert aus Config lesen mit Fallback-Default

Lisp/ssg_load.lsp: (ssg-load-config) wird direkt nach dem Laden von
ssg_core.lsp aufgerufen, sodass die Config beim Laden aller weiteren
Module bereits verfuegbar ist.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-12 11:25:54 +02:00
m.stangl fd58ef612f attradd.py und add_attr.bat in set_attributs.py/.bat umbenannt
lib/attradd.py -> lib/set_attributs.py: Name besser passend zum
Skript-Zweck (setzt Attribute, analog set_einfuegepkt / set_koords).
bin/add_attr.bat -> bin/set_attributs.bat entsprechend angepasst.

cfg/attradd.cfg: Kommentar auf neuen Skriptnamen aktualisiert.
HOEHE/DREHUNG-Eintraege aus [bogen] und [weiche] entfernt, da diese
Attribute jetzt dynamisch via ssg-cfg-or aus component_defaults.json
bezogen werden (nicht mehr als statische ATTDEF-Defaults noetig).
Ebenso RADIUS aus [weiche] entfernt (war redundant zu KurvenWinkel).

doc/tools.md und CLAUDE.md: Alle Verweise auf attradd.py auf
set_attributs.py aktualisiert.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-12 11:25:28 +02:00
m.stangl 9fe08411df Update der Attribute Höhe und Drehung vor Aufruf der Exports durchgeführt 2026-06-11 12:08:40 +02:00
m.stangl 0e8d264b6a eigene Export Routine aus den Tests extrahiert 2026-06-11 12:03:23 +02:00
m.stangl e4564be24c Omniflo Einträge von Verbindern und Bögen für Weichen Ergänzt 2026-06-11 11:15:13 +02:00
m.stangl a2d6571ab9 Omniflo csv Export erste Fassung. Höhe und Winkel in die Attribute ergänzt. Dcl Dialoge ermöglichen Eingabe von Höhe und Drehung. Neuer Menü-eintrag bearbeiten in Omniflo dazu. 2026-06-10 17:47:26 +02:00
m.stangl f05340ed59 Omniflo Export funktion geschrieben 2026-06-10 17:22:02 +02:00
m.stangl 22a358554d Pyrx Startup skripte und python Element entfernt, da Schwierigkeiten mit Kompabilitäten 2026-06-10 16:58:12 +02:00
m.stangl 1bda736606 Funktion hinzugefügt um die Quellen der Menüeinträge und Funktionen zu finden. menu-inventory.lsp 2026-06-10 16:57:06 +02:00
m.stangl fb64ea1b16 PYHTONHOME und PYTHONPATH aus Umgebung rausgeworfen. Wenn die .venv verwendet wird ist das ein problem. 2026-06-10 16:12:54 +02:00
m.stangl 40b430ee73 Startup Skript so modifiziert, dass Lisp files als Fallback geladen werden 2026-06-03 10:06:09 +02:00
m.stangl b8842957fc aktuellsten Stand eingepflegt. Probleme mit dem PYLOAD noch nicht bereinigt 2026-06-03 09:16:49 +02:00
y.wang 604cdaf81f Die Module für Gefaellestrecke wurde gebaut. 2026-06-02 15:16:24 +02:00
m.stangl f1c3e5f060 Startup-Sequenz geändert, um ein Debugfile möglichst früh zu haben 2026-06-02 13:14:00 +02:00
y.wang d2ab6ff4e2 Merge branch 'master' of https://gitea.schoenenberger.de/Schoenenberger_Systeme_GmbH/dxfmakros 2026-06-02 10:00:42 +02:00
y.wang c014ef2f12 die Fehler in VarioFoerderer.lsp korrigiert. alle in ILS-LSP verwendete Block Dateien in data/ils/ konsolidiert. 2026-06-02 10:00:36 +02:00
m.stangl b2dbd8c1c3 vereinfachte Möglichkeit BRX Plugin zu laden über den .venv Pfad. 2026-06-01 19:24:15 +02:00
y.wang acf9f666cc Merge branch 'master' of https://gitea.schoenenberger.de/Schoenenberger_Systeme_GmbH/dxfmakros 2026-06-01 14:52:20 +02:00
y.wang b54f2e7b46 Die KS-EIN und KS-AUS für Ein- und Ausschleuselemente wurde in Library angepasst. 2026-06-01 14:52:14 +02:00
m.stangl d0373d09f3 Omniflo Boegen und Weichen auch durch .py erzeugen und ändern. 2026-06-01 11:08:19 +02:00
m.stangl 35e4e707aa Beschreibung von Claude für das PRojekt ergänzt, da in zukunft mit python gearbeitet wird 2026-06-01 11:07:13 +02:00
m.stangl 732daedadd lib/utils.py in lib/omniflo_utils.py umbenannt. elemente/kreisel.py verwendet jetzt auch die elemente/utils.py routinen 2026-06-01 10:27:38 +02:00
m.stangl 4bafc4443f eigenen Test geschrieben, der die Elemente im Varioförderer an den K_EIN und K_AUS Punkten aufreiht, so dass man eventuelle Fehler sehen kann. 2026-06-01 10:24:24 +02:00
m.stangl 676224b172 cache der aus den Koordinaten K_AUS und K_EIN geladenen Punkte eingeführt 2026-06-01 10:23:43 +02:00
m.stangl c30d2c51b9 Python Routinen mit PyRx als Ersatz für die .lsp Routinen verwendet. 2026-06-01 10:22:24 +02:00
m.stangl be69281af5 Varioförderer Test in tests.lsp wieder rein 2026-05-29 13:28:08 +02:00
m.stangl e41d6456d4 test runner dazu 2026-05-28 17:37:04 +02:00
m.stangl 3aed8fe176 debug beim Varioförderer dazu. dbgreturn routine gibt den Wert zurück. neues Test Konzept für unsere lisp Funktionen implementiert 2026-05-28 17:34:02 +02:00
m.stangl 909f780bf0 Testkonzept für unsere Lisp files überlegt 2026-05-28 17:31:11 +02:00
m.stangl dd90c3b97f Allgmeine PRojektbeschreibung für Claude dazu 2026-05-28 16:11:38 +02:00
m.stangl 5f179da36f Maße von AUS und EIN schleuselement festgestellt 2026-05-28 15:50:18 +02:00
m.stangl 765bf1f975 Gefällestrecken der Varioförderer werden jetzt auch aus den Blöcken der ILS Bibliothek gezogen, nicht mehr aus den EInzeldateien. 2026-05-28 15:23:20 +02:00
y.wang 96c00d20fa Merge branch 'master' of https://gitea.schoenenberger.de/m.stangl/dxfmakros 2026-05-28 14:47:41 +02:00
m.stangl 18c2aa0a60 Eckrad Befehle modifziert. Automatische Nummernvergabe in lisp impl. 2026-05-28 14:47:12 +02:00
y.wang 2400c20e37 :wqerge branch 'master' of https://gitea.schoenenberger.de/m.stangl/dxfmakros 2026-05-28 14:45:39 +02:00
y.wang 3b3cc2a005 Die horizontale Variobögen und Gefällebögen dazu, und die Varioförderer Lisp angepasst. 2026-05-28 14:45:34 +02:00
m.stangl 788593599a Entwicklungsplan nach Gespräch angepasst 2026-05-28 11:28:40 +02:00
m.stangl e85fefa7d3 Eckrad wird eingefügt. 2026-05-26 14:17:38 +02:00
m.stangl 590e197557 lisp dbg library um ein paar Einträge gefixt. dbg lib wird geladen und initalisiert. .dbg file erscheint im logs Ordner. Fix zu den verlorenden Attributen des Kreisels 2026-05-26 13:43:43 +02:00
m.stangl 552da72011 erste fassung einer .dbg library für lisp Programme erzeugt 2026-05-26 12:18:49 +02:00