Commit Graph

174 Commits

Author SHA1 Message Date
m.stangl abc7d5ab77 der Lisp Omniflo Test verwendet jetzt wirklich alle existierenden Omniflo Teile die da sind. 2026-06-22 11:19:27 +02:00
m.stangl fed941d7b1 Neuer Abschnitt 'alltests.json — Testregistry' erklaert Zweck, Format und save-Optionen. Workflow-Abschnitt aktualisiert: korrekte Beschreibung von SSG_RUN_ALL_TESTS, Vergleichstabelle vs. Einzeltest, und Namenskonventionen fuer LISP-Datei, Befehl und Export-Funktion. 2026-06-22 10:42:20 +02:00
m.stangl 2d6cb788cf Neue Positionen für die Kreisel im Test festgelegt. Weniger Überlappungen und leichter durch einen Blick von oben und der seite zu prüfen. 2026-06-19 21:06:02 +02:00
m.stangl 8d32102531 Testmodule aus alltests.json laden statt hartcodierter Liste
SSG_RUN_ALL_TESTS liest die Testliste jetzt aus tests/alltests.json.
Pro Test konfigurierbar: JSON-Export (immer), DXF, DWG oder kein
Speichern der Zeichnung ueber das Feld 'save'.
2026-06-19 21:01:47 +02:00
m.stangl c01dad28f3 Testroutinen auf kseinaus umbenannt und aktualisiert
test_ks.lsp in test_kseinaus.lsp umbenannt und alle Testroutinen
(foerderer, kreisel, omniflo) sowie run_tests.bat und README
entsprechend angepasst.
2026-06-19 21:00:45 +02:00
m.stangl 21682576c4 Bugfixes in LISP-Testrunnern (Foerderer, KS, SAVEAS)
- test_foerderer.lsp: foerderanlage-einfuegen -> variofoerderer-einfuegen
  mit korrekten Parametern (seite, vf-nummer, n-scanner)
- test_foerderer.lsp, test_kreisel.lsp, test_ks.lsp: SAVEAS "DXF" durch
  SAVEAS "" ersetzt (BricsCAD erkennt Format an .dxf-Endung automatisch)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-18 16:05:50 +02:00
m.stangl bd053d76d3 Kreisel Script-Funktionen und flaches JSON-Testformat
- kreisel-insert-script und kreisel-connect-script in KreiselInsert.lsp
  fuer nicht-interaktives Einfuegen (Tests, Automatisierung)
- kreisel_tests.json von verschachteltem auf flaches JSON-Array umgestellt
  (kompatibel mit omni:load-json)
- test_kreisel.py an neues JSON-Format angepasst (direkte Felder statt
  nested expect/attributes)
- conftest.py: Leere kreisel_results.json wird jetzt korrekt uebersprungen

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-18 16:05:40 +02:00
y.wang fc38d4740f Merge branch 'master' of https://gitea.schoenenberger.de/Schoenenberger_Systeme_GmbH/dxfmakros 2026-06-18 15:21:14 +02:00
y.wang 607ec3bd47 Merge 2026-06-18 15:21:10 +02:00
s.hensch d9962c96b1 2D ILS Dateien in neues 2D Verzeichnis verschoben 2026-06-18 15:16:06 +02:00
y.wang ee6ec9550f Die Logik für EtageVariofoerderer also zur Verbindung Zwei Kreisel übereinander wurde gebaut, mit AS- und Einelement 30° 2026-06-18 15:15:36 +02:00
m.stangl 8894cf9e4c Merge branch 'master' of https://gitea.schoenenberger.de/Schoenenberger_Systeme_GmbH/dxfmakros 2026-06-18 14:57:17 +02:00
m.stangl 669545761d neues Testsystem. Dazu Doku erstellt wie es funktioniert in dewr README.md Aufruf aller Tests im Bricscad durch eigenes Menü. 2026-06-18 14:57:03 +02:00
s.hensch 9ea5e1bbae Merge branch 'master' of https://gitea.schoenenberger.de/m.stangl/dxfmakros 2026-06-18 14:45:38 +02:00
s.hensch 3d0e4e6a80 3D und 2D bzw 2.5D mit identischen Koordinatensystemen hinzugefügt 2026-06-18 14:45:05 +02:00
m.stangl 91530e9d99 Menü für Lazy call umgebaut 2026-06-18 14:16:38 +02:00
y.wang 937d7b0e13 Der Aufruf-Befehl in Bricscad für Varioförderer.lsp wurde von FOERDERANLAGE auf VarioFoederer geändert. Die Block-Erstellung und die Attribut-Definition wurden integriet. 2026-06-18 12:31:38 +02:00
y.wang 714dc65f45 Alle Objekte sind Ende-an-Anfang miteinander verbunden. 2026-06-18 09:45:43 +02:00
y.wang 241cdccc26 Ordner Aufräumen 2026-06-18 08:46:42 +02:00
s.hensch ec55944721 Orderstruktur der Library in 2d und 3d unterteilt, Dateien entsprechend verschoben, Pfade in Variablen im gesamten Verzeichnis entsprechend korrigiert; Vario Vertikalbögen für 2d und 3d erzeugt; 2026-06-18 07:55:01 +02:00
m.stangl eef9a7ff25 Pfade mit Leerzeichen werden sonst nicht richtig aufgelöst 2026-06-17 15:02:18 +02:00
s.hensch 842e07ba76 Setenv.bat erweitert, dass auch V22 erkannt wird und die Möglichkeit zum Überladen von Umgebungsvariablen durch _setenv.bat, die nicht eingecheckt wird 2026-06-17 10:51:32 +02:00
m.stangl c650ea9b7c doc ergänzt 2026-06-16 17:42:14 +02:00
m.stangl a11d0807d2 Höhe, Drehung und Id in allen Omniflo Elementen auch setzen 2026-06-16 17:40:58 +02:00
m.stangl 1f00bb5c13 Startup Skripte entfernt. Werden jetzt über dynamische Menüs erledigt 2026-06-16 17:16:07 +02:00
m.stangl 0b501e5ea5 Anwendung der Erzeugung einer Id für jedes Element 2026-06-16 17:14:19 +02:00
m.stangl d1368dbb01 Merge branch 'master' of https://gitea.schoenenberger.de/Schoenenberger_Systeme_GmbH/dxfmakros 2026-06-16 17:12:31 +02:00
m.stangl 13e4ebb5fc Lisp Routine erstellt, die jedem Element beim Export eine Id gibt. Menüs dynamisch gemacht, d.h. die Lisp Routinen werden erst geladen, wenn sie vom Nutzer per MEnü aufgerufen wurden 2026-06-16 17:12:21 +02:00
y.wang c196602e50 Merge 2026-06-16 12:53:50 +02:00
m.stangl f75a5ad0b1 Doppeltes Laden vom on_start.lsp entfernt 2026-06-15 16:09:02 +02:00
m.stangl 176b775050 Claude und Readme aktualisiert 2026-06-15 15:54:22 +02:00
m.stangl 43aa34674f Veraltete Angaben in Claude.md berichtigt. Dokumentation erneuert 2026-06-15 15:50:29 +02:00
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