diff --git a/Blocks/AN8.dwg b/Blocks/AN8.dwg index 03224bf..4f8a191 100644 Binary files a/Blocks/AN8.dwg and b/Blocks/AN8.dwg differ diff --git a/Blocks/SP8.dwg b/Blocks/SP8.dwg index 5e1c8e3..962fdb5 100644 Binary files a/Blocks/SP8.dwg and b/Blocks/SP8.dwg differ diff --git a/Lisp/KreiselInsert.lsp b/Lisp/KreiselInsert.lsp index eb11f14..417a814 100644 --- a/Lisp/KreiselInsert.lsp +++ b/Lisp/KreiselInsert.lsp @@ -4,27 +4,25 @@ ;; ============================================ ;; ============================================================ -;; TEIL 1: GLOBALE EINSTELLUNGEN (Einfach, aber sicher) +;; TEIL 1: GLOBALE EINSTELLUNGEN ;; ============================================================ -(if (getenv "DXFM_BLOCKS") - (setq modul-pfad (strcat (getenv "DXFM_BLOCKS") "/")) +(setq block-pfad (getenv "DXFM_BLOCKS")) + +(if (or (null block-pfad) (= block-pfad "")) (progn - (alert "DXFM_BLOCKS nicht gesetzt!\nBitte zuerst bin\\setenv.bat ausfuehren.") - (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 "\nBlock-Pfad: " *block-path*)) - -;; 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")) @@ -140,43 +138,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 +320,4 @@ (princ "\nKreiselInsert.lsp geladen (Version 4.0 - Smart Connect)!") (princ "\nBefehle: KreiselInsert, KreiselConnect, KreiselQuick, KreiselParams") -(princ) \ No newline at end of file +(princ) 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