From 16f0c6488a6bd4d198de8b6ed169b70910597d28 Mon Sep 17 00:00:00 2001 From: Yuelin Wang Date: Mon, 11 May 2026 11:40:12 +0200 Subject: [PATCH 1/3] =?UTF-8?q?AN8=20und=20SP8=20f=C3=BCr=20Kreisel=20als?= =?UTF-8?q?=20Einzelne=20DWG=20Datei=20gespeichert.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Blocks/AN8.dwg | Bin 10848 -> 11235 bytes Blocks/SP8.dwg | Bin 10848 -> 11523 bytes Lisp/VarioFoerderer.lsp | 52 ++++++++++++++++++++++++++++++---------- README.md | 4 ++-- 4 files changed, 41 insertions(+), 15 deletions(-) diff --git a/Blocks/AN8.dwg b/Blocks/AN8.dwg index 03224bfb735cbfadd11f5ea47cd246ed3c5a60f7..4f8a1914bfbf014afbd1a0fd7bde5ed980db5b13 100644 GIT binary patch delta 4725 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 b0m0x?w8v63<~rcE6@b4ml=*-8kLZ5@c&fU8 delta 4527 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 Ri5=qve0kWY|CbLu{{aeg*!Tbd diff --git a/Lisp/VarioFoerderer.lsp b/Lisp/VarioFoerderer.lsp index d759128..01c3637 100644 --- a/Lisp/VarioFoerderer.lsp +++ b/Lisp/VarioFoerderer.lsp @@ -7,24 +7,50 @@ (vl-load-com) ;; ============================================================ -;; TEIL 1: GLOBALE EINSTELLUNGEN +;; BLOCK PATH INITIALIZATION ;; ============================================================ -(if (getenv "DXFM_BLOCKS") - (setq modul-pfad (strcat (getenv "DXFM_BLOCKS") "/")) - (progn - (alert "Umgebungsvariable DXFM_BLOCKS nicht gesetzt!\nBitte zuerst bin\\setenv.bat ausfuehren.") - (exit) + +;; ============================================ +;; Automatische Umgebungsvariablen Konfiguration +;; ============================================ + +;; Basis-Pfad (an Ihre Struktur anpassen) +(setq *dxfm-base* "C:\\Users\\y.wang\\Documents\\dxfmakros\\") + +;; Funktion zum sicheren Setzen von Umgebungsvariablen +(defun ensure-env-var (varName defaultPath) + (if (null (getenv varName)) + (progn + (setenv varName defaultPath) + (princ (strcat "\nβœ… " varName " gesetzt: " defaultPath)) + ) + (princ (strcat "\nπŸ“Œ " varName " bereits gesetzt: " (getenv varName))) + ) + (getenv varName) +) + +;; Umgebungsvariablen sicherstellen +(ensure-env-var "DXFM_BLOCKS" (strcat *dxfm-base* "Blocks\\")) +(ensure-env-var "DXFM_DATA" (strcat *dxfm-base* "Data\\")) + +;; Block-Pfad initialisieren (fΓΌr draw-module) +(setq *block-pfad* (getenv "DXFM_BLOCKS")) + +;; Koordinaten-Bibliothek initialisieren (mit Fallback) +(setq koordinaten-lib + (if (getenv "DXFM_DATA") + (strcat (getenv "DXFM_DATA") "block_libraries\\ils_vario_koordinaten.dwg") + (strcat *dxfm-base* "Data\\block_libraries\\ils_vario_koordinaten.dwg") ) ) -;; Pfad zur Koordinaten-Bibliothek (neue Bogen-Bloecke mit KS_EIN/KS_AUS) -(if (getenv "DXFM_DATA") - (setq koordinaten-lib (strcat (getenv "DXFM_DATA") "/block_libraries/ils_vario_koordinaten.dwg")) - (progn - (alert "Umgebungsvariable DXFM_DATA nicht gesetzt!\nBitte zuerst bin\\setenv.bat ausfuehren.") - (exit) - ) +;; PrΓΌfen ob Koordinaten-Bibliothek existiert +(if (findfile koordinaten-lib) + (princ (strcat "\nβœ… Koordinaten-Bibliothek: " koordinaten-lib)) + (princ (strcat "\n⚠️ Koordinaten-Bibliothek nicht gefunden: " koordinaten-lib)) ) + +(princ "\n=== Umgebungsvariablen initialisiert ===\n") (setq doc (vla-get-ActiveDocument (vlax-get-acad-object))) (setq modelspace (vla-get-ModelSpace doc)) diff --git a/README.md b/README.md index 86dd134..5415b08 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Generiert komplette Vario-Foerderanlagen mit Vertikalboegen, Motor-/Spannstation Unterstuetzte Bogenwinkel: 3, 9, 12, 15, 24, 36, 48 Grad -### ILSModulInsert.lsp - Kreisel Modul-Einfuegesystem (v4.0) +### KreiselInsert.lsp - Kreisel Modul-Einfuegesystem (v4.0) Zeichnet ILS-Kreiselmodule mit konfigurierbarem Abstand und PIN-Typ. @@ -31,7 +31,7 @@ dxfmakros/ β”œβ”€β”€ Blocks/ # DWG-Bloecke (Motorstation, Spannstation, Vertikalboegen, etc.) β”œβ”€β”€ Lisp/ # AutoLISP-Makros β”‚ β”œβ”€β”€ VarioFoerderer.lsp -β”‚ └── ILSModulInsert.lsp +β”‚ └── KreiselInsert.lsp β”œβ”€β”€ bin/ # Hilfs-Skripte β”œβ”€β”€ result/ # Ergebnisse / DXF-Exporte (nicht im Git) β”œβ”€β”€ LICENSE From 3d944f85dc397cd5b252d569d2c4fdb9e9af19ed Mon Sep 17 00:00:00 2001 From: Yuelin Wang Date: Mon, 11 May 2026 12:03:59 +0200 Subject: [PATCH 2/3] fassung gemerged --- Lisp/KreiselInsert.lsp | 48 +++++++++++++++++++++++++----------------- 1 file changed, 29 insertions(+), 19 deletions(-) diff --git a/Lisp/KreiselInsert.lsp b/Lisp/KreiselInsert.lsp index eb11f14..9214faa 100644 --- a/Lisp/KreiselInsert.lsp +++ b/Lisp/KreiselInsert.lsp @@ -10,14 +10,24 @@ (if (getenv "DXFM_BLOCKS") (setq modul-pfad (strcat (getenv "DXFM_BLOCKS") "/")) (progn - (alert "DXFM_BLOCKS nicht gesetzt!\nBitte zuerst bin\\setenv.bat ausfuehren.") + (alert "Umgebungsvariable DXFM_BLOCKS nicht gesetzt!\nBitte zuerst bin\\setenv.bat ausfuehren.") + (exit) + ) + + (progn + (alert + "DXFM_BLOCKS nicht gesetzt!\n\n" + "Bitte fuehren Sie zuerst bin\\setenv.bat aus,\n" + "oder setzen Sie den Pfad manuell mit:\n" + "(setenv \"DXFM_BLOCKS\" \"C:/Users/y.wang/Documents/dxfmakros/Blocks/")" + ) (exit) ) ) ;; block-pfad neu setzen (setq *block-path* (getenv "DXFM_BLOCKS")) -(princ (strcat "\nBlock-Pfad: " *block-path*)) +(princ (strcat "\nβœ… Block-Pfad: " block-pfad)) ;; Basispunkt: Linker Kreis, linkester Tangentenpunkt (links Mitte) ;; ============================================ @@ -140,43 +150,43 @@ ;; Verbindungspunkte pruefen (cond ;; T_O (Mittelpunkt obere Tangente) - ((and (< (abs (- pickX (+ x 400.0 (/ abstand 2.0)))) tolerance) - (< (abs (- pickY (+ y 400.0))) tolerance)) + ((and (<= (abs (- pickX (+ x 400.0 (/ abstand 2.0)))) tolerance) + (<= (abs (- pickY (+ y 400.0))) tolerance)) (setq type "T_O")) ;; T_U (Mittelpunkt untere Tangente) - ((and (< (abs (- pickX (+ x 400.0 (/ abstand 2.0)))) tolerance) - (< (abs (- pickY (- y 400.0))) tolerance)) + ((and (<= (abs (- pickX (+ x 400.0 (/ abstand 2.0)))) tolerance) + (<= (abs (- pickY (- y 400.0))) tolerance)) (setq type "T_U")) ;; M_O (Linker Kreis, oberer Rand) - ((and (< (abs (- pickX (+ x 400.0))) tolerance) - (< (abs (- pickY (+ y 400.0))) tolerance)) + ((and (<= (abs (- pickX (+ x 400.0))) tolerance) + (<= (abs (- pickY (+ y 400.0))) tolerance)) (setq type "M_O")) ;; M_U (Linker Kreis, unterer Rand) - ((and (< (abs (- pickX (+ x 400.0))) tolerance) - (< (abs (- pickY (- y 400.0))) tolerance)) + ((and (<= (abs (- pickX (+ x 400.0))) tolerance) + (<= (abs (- pickY (- y 400.0))) tolerance)) (setq type "M_U")) ;; M_L (Linker Kreis, linker Rand) - ((and (< (abs (- pickX x)) tolerance) - (< (abs (- pickY y)) tolerance)) + ((and (<= (abs (- pickX x)) tolerance) + (<= (abs (- pickY y)) tolerance)) (setq type "M_L")) ;; S_O (Rechter Kreis, oberer Rand) - ((and (< (abs (- pickX (+ x 400.0 abstand))) tolerance) - (< (abs (- pickY (+ y 400.0))) tolerance)) + ((and (<= (abs (- pickX (+ x 400.0 abstand))) tolerance) + (<= (abs (- pickY (+ y 400.0))) tolerance)) (setq type "S_O")) ;; S_U (Rechter Kreis, unterer Rand) - ((and (< (abs (- pickX (+ x 400.0 abstand))) tolerance) - (< (abs (- pickY (- y 400.0))) tolerance)) + ((and (<= (abs (- pickX (+ x 400.0 abstand))) tolerance) + (<= (abs (- pickY (- y 400.0))) tolerance)) (setq type "S_U")) ;; S_R (Rechter Kreis, rechter Rand) - ((and (< (abs (- pickX (+ x 800.0 abstand))) tolerance) - (< (abs (- pickY y)) tolerance)) + ((and (<= (abs (- pickX (+ x 800.0 abstand))) tolerance) + (<= (abs (- pickY y)) tolerance)) (setq type "S_R")) (t (setq type "UNKNOWN")) @@ -322,4 +332,4 @@ (princ "\nKreiselInsert.lsp geladen (Version 4.0 - Smart Connect)!") (princ "\nBefehle: KreiselInsert, KreiselConnect, KreiselQuick, KreiselParams") -(princ) \ No newline at end of file +(princ) From eb9edaca3c0c547d3887a1c98d57fd334be5c46e Mon Sep 17 00:00:00 2001 From: Yuelin Wang Date: Mon, 11 May 2026 12:17:24 +0200 Subject: [PATCH 3/3] IF-Abfrage war falsch und wurde korrigiert. --- Lisp/KreiselInsert.lsp | 32 ++++++++++---------------------- 1 file changed, 10 insertions(+), 22 deletions(-) diff --git a/Lisp/KreiselInsert.lsp b/Lisp/KreiselInsert.lsp index 9214faa..417a814 100644 --- a/Lisp/KreiselInsert.lsp +++ b/Lisp/KreiselInsert.lsp @@ -4,37 +4,25 @@ ;; ============================================ ;; ============================================================ -;; TEIL 1: GLOBALE EINSTELLUNGEN (Einfach, aber sicher) +;; TEIL 1: GLOBALE EINSTELLUNGEN ;; ============================================================ -(if (getenv "DXFM_BLOCKS") - (setq modul-pfad (strcat (getenv "DXFM_BLOCKS") "/")) - (progn - (alert "Umgebungsvariable DXFM_BLOCKS nicht gesetzt!\nBitte zuerst bin\\setenv.bat ausfuehren.") - (exit) - ) +(setq block-pfad (getenv "DXFM_BLOCKS")) +(if (or (null block-pfad) (= block-pfad "")) (progn - (alert - "DXFM_BLOCKS nicht gesetzt!\n\n" - "Bitte fuehren Sie zuerst bin\\setenv.bat aus,\n" - "oder setzen Sie den Pfad manuell mit:\n" - "(setenv \"DXFM_BLOCKS\" \"C:/Users/y.wang/Documents/dxfmakros/Blocks/")" - ) - (exit) + (setq block-pfad "C:/Users/y.wang/Documents/dxfmakros/Blocks/") ;; Fallback oder manuell + (alert (strcat "Umgebungsvariable DXFM_BLOCKS nicht gefunden.\nNutze Standardpfad: " block-pfad)) ) + (setq block-pfad (strcat (vl-string-right-trim "/" (vl-string-translate "\\" "/" block-pfad)) "/")) ) -;; block-pfad neu setzen -(setq *block-path* (getenv "DXFM_BLOCKS")) -(princ (strcat "\nβœ… Block-Pfad: " block-pfad)) - -;; Basispunkt: Linker Kreis, linkester Tangentenpunkt (links Mitte) -;; ============================================ +(setq *block-path* block-pfad) +(princ (strcat "\nβœ… Block-Pfad aktiv: " block-pfad)) ;; Standardwerte initialisieren -(setq #Kreisel_Abstand 2300.0) -(setq #Kreisel_Typ "PIN") +(if (null #Kreisel_Abstand) (setq #Kreisel_Abstand 2300.0)) +(if (null #Kreisel_Typ) (setq #Kreisel_Typ "PIN"))