diff --git a/Lisp/VarioFoerderer.lsp b/Lisp/VarioFoerderer.lsp index 8cf00b4..28e6511 100644 --- a/Lisp/VarioFoerderer.lsp +++ b/Lisp/VarioFoerderer.lsp @@ -167,52 +167,30 @@ ) ;; ============================================================ -;; 🔥 METHODE 1: Für rotierte Blöcke (Staustrecken, Separator, Spannstation, Motorstation) -;; X = berechnet aus Länge * cos(Winkel) -;; Z = aus BoundingBox +;; METHODE 1: Für rotierte Blöcke (Staustrecken, Separator, Spannstation, Motorstation) +;; X = L * cos(Winkel) +;; Z = -L * sin(Winkel) (negative sin wegen Rotation um Y-Achse) ;; ============================================================ -(defun get-block-endpoint-rotated (obj startpunkt winkel laenge) +(defun get-block-endpoint-rotated (startpunkt winkel laenge) (setq rad (* winkel (/ pi 180.0))) - (setq berechnete_dx (* laenge (cos rad))) - - (vla-GetBoundingBox obj 'minpt 'maxpt) - (setq minpt (vlax-safearray->list minpt)) - (setq maxpt (vlax-safearray->list maxpt)) - (setq reale_dz (- (caddr maxpt) (caddr minpt))) - - (list (+ (car startpunkt) berechnete_dx) + (list (+ (car startpunkt) (* laenge (cos rad))) (cadr startpunkt) - (+ (caddr startpunkt) reale_dz)) + (+ (caddr startpunkt) (* (- (sin rad)) laenge))) ) ;; ============================================================ -;; 🔥 METHODE 2: Für nicht-rotierte Blöcke (AUS_Element, EIN_Element) -;; X und Z aus BoundingBox (relativ zum Startpunkt) +;; METHODE 2: Für nicht-rotierte Blöcke (AUS_Element, EIN_Element) +;; Verwendet feste dx/dy/dz Werte ;; ============================================================ -(defun get-block-endpoint-nonrotated (obj startpunkt) - (vla-GetBoundingBox obj 'minpt 'maxpt) - (setq minpt (vlax-safearray->list minpt)) - (setq maxpt (vlax-safearray->list maxpt)) - - (list (+ (car startpunkt) (- (car maxpt) (car minpt))) ;; Relative DX - (cadr startpunkt) ;; Y unverändert - (+ (caddr startpunkt) (- (caddr maxpt) (caddr minpt)))) ;; Relative DZ -) ;; ============================================================ -;; 🔥 METHODE 3: Für Vertikalbögen -;; X aus Tabelle (vordefinierte Werte) -;; Z aus BoundingBox +;; METHODE 3: Für Vertikalbögen +;; X aus Tabelle, Z aus Tabelle (nicht BoundingBox!) ;; ============================================================ -(defun get-block-endpoint-bogen (obj startpunkt bogen-x) - (vla-GetBoundingBox obj 'minpt 'maxpt) - (setq minpt (vlax-safearray->list minpt)) - (setq maxpt (vlax-safearray->list maxpt)) - (setq reale_dz (- (caddr maxpt) (caddr minpt))) - - (list (+ (car startpunkt) bogen-x) ;; X aus Tabelle +(defun get-block-endpoint-bogen (startpunkt bogen-x bogen-dz) + (list (+ (car startpunkt) bogen-x) (cadr startpunkt) - (+ (caddr startpunkt) reale_dz)) ;; Z aus BBox + (+ (caddr startpunkt) bogen-dz)) ) ;; ============================================================ @@ -300,244 +278,286 @@ ;; ============================================================ ;; TEIL 6: MODULE EINFÜGEN (mit korrigierter Methodenzuordnung) ;; ============================================================ -(defun foerderanlage-einfuegen (deltaL deltaH richtung +(defun foerderanlage-einfuegen (deltaL deltaH richtung best-winkel L_GF L_VF startpunkt) (setq aktueller-punkt startpunkt) (setq L_GF1 (/ L_GF 2)) (setq L_GF2 (/ L_GF 2)) - + (princ "\n\n=========================================") (princ "\nBeginne mit dem Einfügen der Module...") (princ "\n=========================================") - (princ (strcat "\nStartpunkt (AUS_Element Eingang): X=" (rtos (car aktueller-punkt) 2 2) + (princ (strcat "\n[START] X=" (rtos (car aktueller-punkt) 2 2) ", Y=" (rtos (cadr aktueller-punkt) 2 2) ", Z=" (rtos (caddr aktueller-punkt) 2 2))) ;; ========================================================== - ;; 1. AUS_Element_links - Verwenden Sie die manuellen Werte + ;; 1. AUS_Element_links ;; ========================================================== (princ "\n\n1/11: AUS_Element_links") (setq blockname (strcat modul-pfad "AUS_Element_links.dwg")) (if (findfile blockname) (progn + (princ (strcat "\n Einfuegen bei: X=" (rtos (car aktueller-punkt) 2 2) + ", Y=" (rtos (cadr aktueller-punkt) 2 2) + ", Z=" (rtos (caddr aktueller-punkt) 2 2))) (setq block (InsertBlock blockname aktueller-punkt 1.0)) - ;; Verwenden Sie die manuellen Werte statt BoundingBox - (setq aktueller-punkt (list + (setq aktueller-punkt (list (+ (car aktueller-punkt) aus-dx) (+ (cadr aktueller-punkt) aus-dy) (+ (caddr aktueller-punkt) aus-dz))) - (princ (strcat "\n → AUS_Element Ausgang (manuell): X=" (rtos (car aktueller-punkt) 2 2) - ", Y=" (rtos (cadr aktueller-punkt) 2 2) - ", Z=" (rtos (caddr aktueller-punkt) 2 2))) + (princ (strcat "\n Endpunkt: X=" (rtos (car aktueller-punkt) 2 2) + ", Y=" (rtos (cadr aktueller-punkt) 2 2) + ", Z=" (rtos (caddr aktueller-punkt) 2 2))) ) (princ "\n FEHLER: AUS_Element_links.dwg nicht gefunden.") ) ;; ========================================================== - ;; 2. 1. GEFÄLLESTRECKE (L_GF1) (METHODE 1: rotiert, X per cos, Z per BBox) + ;; 2. 1. GEFÄLLESTRECKE (L_GF1) ;; ========================================================== (if (> L_GF1 0.1) (progn - (princ (strcat "\n2/11: Staustrecke (3° nach unten, Länge=" (rtos L_GF1 2 2) " mm)")) + (princ (strcat "\n\n2/11: Staustrecke (3 Grad, Laenge=" (rtos L_GF1 2 2) " mm)")) (setq blockname (strcat modul-pfad "Staustrecke_SP_1000_mm.dwg")) (if (findfile blockname) (progn + (princ (strcat "\n Einfuegen bei: X=" (rtos (car aktueller-punkt) 2 2) + ", Y=" (rtos (cadr aktueller-punkt) 2 2) + ", Z=" (rtos (caddr aktueller-punkt) 2 2))) (setq block (InsertBlock blockname aktueller-punkt (/ L_GF1 1000.0))) (Rotate3D-Y block aktueller-punkt 3) - (setq aktueller-punkt (get-block-endpoint-rotated block aktueller-punkt 3 L_GF1)) - (princ (strcat "\n → Endpunkt: X=" (rtos (car aktueller-punkt) 2 2) + (setq aktueller-punkt (get-block-endpoint-rotated aktueller-punkt 3 L_GF1)) + (princ (strcat "\n Endpunkt: X=" (rtos (car aktueller-punkt) 2 2) + ", Y=" (rtos (cadr aktueller-punkt) 2 2) ", Z=" (rtos (caddr aktueller-punkt) 2 2))) ) (princ (strcat "\n FEHLER: Blockdatei nicht gefunden: " blockname)) ) ) - (princ "\n2/11: (übersprungen, L_GF1 = 0)") + (princ "\n2/11: (uebersprungen, L_GF1 = 0)") ) ;; ========================================================== - ;; 3. SEPARATOR 1 (METHODE 1: rotiert, X per cos, Z per BBox) + ;; 3. SEPARATOR 1 ;; ========================================================== - (princ "\n3/11: Separator 300mm (3° nach unten)") + (princ "\n\n3/11: Separator 300mm (3 Grad)") (setq blockname (strcat modul-pfad "Staustrecke_Separator_SP_300_mm.dwg")) (if (findfile blockname) (progn + (princ (strcat "\n Einfuegen bei: X=" (rtos (car aktueller-punkt) 2 2) + ", Y=" (rtos (cadr aktueller-punkt) 2 2) + ", Z=" (rtos (caddr aktueller-punkt) 2 2))) (setq block (InsertBlock blockname aktueller-punkt 1.0)) (Rotate3D-Y block aktueller-punkt 3) - (setq aktueller-punkt (get-block-endpoint-rotated block aktueller-punkt 3 separator-laenge)) - (princ (strcat "\n → Endpunkt: X=" (rtos (car aktueller-punkt) 2 2) + (setq aktueller-punkt (get-block-endpoint-rotated aktueller-punkt 3 separator-laenge)) + (princ (strcat "\n Endpunkt: X=" (rtos (car aktueller-punkt) 2 2) + ", Y=" (rtos (cadr aktueller-punkt) 2 2) ", Z=" (rtos (caddr aktueller-punkt) 2 2))) ) (princ "\n FEHLER: Separator 1 Datei nicht gefunden.") ) ;; ========================================================== - ;; 4. SPANNSTATION (METHODE 1: rotiert, X per cos, Z per BBox) + ;; 4. SPANNSTATION ;; ========================================================== - (princ "\n4/11: Spannstation 500mm (3° nach unten)") + (princ "\n\n4/11: Spannstation 500mm (3 Grad)") (setq blockname (strcat modul-pfad "Vario_Spannstation_SP_500mm.dwg")) (if (findfile blockname) (progn + (princ (strcat "\n Einfuegen bei: X=" (rtos (car aktueller-punkt) 2 2) + ", Y=" (rtos (cadr aktueller-punkt) 2 2) + ", Z=" (rtos (caddr aktueller-punkt) 2 2))) (setq block (InsertBlock blockname aktueller-punkt 1.0)) (Rotate3D-Y block aktueller-punkt 3) - (setq aktueller-punkt (get-block-endpoint-rotated block aktueller-punkt 3 spannstation-laenge)) - (princ (strcat "\n → Endpunkt: X=" (rtos (car aktueller-punkt) 2 2) + (setq aktueller-punkt (get-block-endpoint-rotated aktueller-punkt 3 spannstation-laenge)) + (princ (strcat "\n Endpunkt: X=" (rtos (car aktueller-punkt) 2 2) + ", Y=" (rtos (cadr aktueller-punkt) 2 2) ", Z=" (rtos (caddr aktueller-punkt) 2 2))) ) (princ "\n FEHLER: Spannstation Datei nicht gefunden.") ) ;; ========================================================== - ;; 5. 1. VERTIKALBOGEN (METHODE 3: X aus Tabelle, Z aus BoundingBox) + ;; 5. 1. VERTIKALBOGEN (X und Z aus Tabelle) ;; ========================================================== (if (= richtung "Auf") (progn - (princ (strcat "\n5/11: Vertikalbogen_Auf_" (itoa best-winkel) "_Unten")) + (princ (strcat "\n\n5/11: Vertikalbogen_Auf_" (itoa best-winkel) "_Unten")) (setq blockname (strcat modul-pfad "Vertikalbogen_Auf_" (itoa best-winkel) "_Unten.dwg")) (setq bogen-mass (get-bogen-mass bogen-auf-unten best-winkel)) ) (progn - (princ (strcat "\n5/11: Vertikalbogen_Ab_" (itoa best-winkel) "_Oben")) + (princ (strcat "\n\n5/11: Vertikalbogen_Ab_" (itoa best-winkel) "_Oben")) (setq blockname (strcat modul-pfad "Vertikalbogen_Ab_" (itoa best-winkel) "_Oben.dwg")) - (setq bogen-mass (get-bogen-mass-mit-abs bogen-ab-oben best-winkel)) + (setq bogen-mass (get-bogen-mass bogen-ab-oben best-winkel)) ) ) (if (findfile blockname) (progn + (princ (strcat "\n Einfuegen bei: X=" (rtos (car aktueller-punkt) 2 2) + ", Y=" (rtos (cadr aktueller-punkt) 2 2) + ", Z=" (rtos (caddr aktueller-punkt) 2 2))) (setq block (InsertBlock blockname aktueller-punkt 1.0)) - ;; KEINE Rotation! Der Bogen ist bereits richtig ausgerichtet (setq bogen-x (car bogen-mass)) - (setq aktueller-punkt (get-block-endpoint-bogen block aktueller-punkt bogen-x)) - (princ (strcat "\n → Endpunkt: X=" (rtos (car aktueller-punkt) 2 2) + (setq bogen-dz (caddr bogen-mass)) + (princ (strcat "\n Tabelle: dx=" (rtos bogen-x 2 2) ", dz=" (rtos bogen-dz 2 2))) + (setq aktueller-punkt (get-block-endpoint-bogen aktueller-punkt bogen-x bogen-dz)) + (princ (strcat "\n Endpunkt: X=" (rtos (car aktueller-punkt) 2 2) + ", Y=" (rtos (cadr aktueller-punkt) 2 2) ", Z=" (rtos (caddr aktueller-punkt) 2 2))) ) (princ (strcat "\n FEHLER: Bogen-Datei nicht gefunden: " blockname)) ) ;; ========================================================== - ;; 6. VARIABLE STRECKE L_VF (METHODE 1: rotiert, X per cos, Z per BBox) + ;; 6. VARIABLE STRECKE L_VF ;; ========================================================== (if (> L_VF 0.1) (progn (if (= richtung "Auf") (progn - (princ (strcat "\n6/11: Steigungsstrecke (" (itoa best-winkel) "° nach oben, Länge=" (rtos L_VF 2 2) " mm)")) + (princ (strcat "\n\n6/11: Steigungsstrecke (" (itoa best-winkel) " Grad, Laenge=" (rtos L_VF 2 2) " mm)")) (setq rot-winkel (- best-winkel)) ) (progn - (princ (strcat "\n6/11: Gefällestrecke (" (itoa best-winkel) "° nach unten, Länge=" (rtos L_VF 2 2) " mm)")) + (princ (strcat "\n\n6/11: Gefaellestrecke (" (itoa best-winkel) " Grad, Laenge=" (rtos L_VF 2 2) " mm)")) (setq rot-winkel best-winkel) ) ) (setq blockname (strcat modul-pfad "Staustrecke_SP_1000_mm.dwg")) (if (findfile blockname) (progn + (princ (strcat "\n Einfuegen bei: X=" (rtos (car aktueller-punkt) 2 2) + ", Y=" (rtos (cadr aktueller-punkt) 2 2) + ", Z=" (rtos (caddr aktueller-punkt) 2 2))) (setq block (InsertBlock blockname aktueller-punkt (/ L_VF 1000.0))) (Rotate3D-Y block aktueller-punkt rot-winkel) - (setq aktueller-punkt (get-block-endpoint-rotated block aktueller-punkt rot-winkel L_VF)) - (princ (strcat "\n → Endpunkt: X=" (rtos (car aktueller-punkt) 2 2) + (setq aktueller-punkt (get-block-endpoint-rotated aktueller-punkt rot-winkel L_VF)) + (princ (strcat "\n Endpunkt: X=" (rtos (car aktueller-punkt) 2 2) + ", Y=" (rtos (cadr aktueller-punkt) 2 2) ", Z=" (rtos (caddr aktueller-punkt) 2 2))) ) (princ (strcat "\n FEHLER: Blockdatei nicht gefunden: " blockname)) ) ) - (princ "\n6/11: (L_VF = 0, übersprungen)") + (princ "\n6/11: (L_VF = 0, uebersprungen)") ) ;; ========================================================== - ;; 7. 2. VERTIKALBOGEN (METHODE 3: X aus Tabelle, Z aus BoundingBox) + ;; 7. 2. VERTIKALBOGEN (X und Z aus Tabelle) ;; ========================================================== (if (= richtung "Auf") (progn - (princ (strcat "\n7/11: Vertikalbogen_Auf_" (itoa best-winkel) "_Oben")) + (princ (strcat "\n\n7/11: Vertikalbogen_Auf_" (itoa best-winkel) "_Oben")) (setq blockname (strcat modul-pfad "Vertikalbogen_Auf_" (itoa best-winkel) "_Oben.dwg")) (setq bogen-mass (get-bogen-mass bogen-auf-oben best-winkel)) ) (progn - (princ (strcat "\n7/11: Vertikalbogen_Ab_" (itoa best-winkel) "_Unten")) + (princ (strcat "\n\n7/11: Vertikalbogen_Ab_" (itoa best-winkel) "_Unten")) (setq blockname (strcat modul-pfad "Vertikalbogen_Ab_" (itoa best-winkel) "_Unten.dwg")) - (setq bogen-mass (get-bogen-mass-mit-abs bogen-ab-unten best-winkel)) + (setq bogen-mass (get-bogen-mass bogen-ab-unten best-winkel)) ) ) (if (findfile blockname) (progn + (princ (strcat "\n Einfuegen bei: X=" (rtos (car aktueller-punkt) 2 2) + ", Y=" (rtos (cadr aktueller-punkt) 2 2) + ", Z=" (rtos (caddr aktueller-punkt) 2 2))) (setq block (InsertBlock blockname aktueller-punkt 1.0)) - ;; KEINE Rotation! (setq bogen-x (car bogen-mass)) - (setq aktueller-punkt (get-block-endpoint-bogen block aktueller-punkt bogen-x)) - (princ (strcat "\n → Endpunkt: X=" (rtos (car aktueller-punkt) 2 2) + (setq bogen-dz (caddr bogen-mass)) + (princ (strcat "\n Tabelle: dx=" (rtos bogen-x 2 2) ", dz=" (rtos bogen-dz 2 2))) + (setq aktueller-punkt (get-block-endpoint-bogen aktueller-punkt bogen-x bogen-dz)) + (princ (strcat "\n Endpunkt: X=" (rtos (car aktueller-punkt) 2 2) + ", Y=" (rtos (cadr aktueller-punkt) 2 2) ", Z=" (rtos (caddr aktueller-punkt) 2 2))) ) (princ (strcat "\n FEHLER: Bogen-Datei nicht gefunden: " blockname)) ) ;; ========================================================== - ;; 8. MOTORSTATION (METHODE 1: rotiert, X per cos, Z per BBox) + ;; 8. MOTORSTATION ;; ========================================================== - (princ "\n8/11: Motorstation 500mm (3° nach unten)") + (princ "\n\n8/11: Motorstation 500mm (3 Grad)") (setq blockname (strcat modul-pfad "Vario_Motorstation_SP_500mm.dwg")) (if (findfile blockname) (progn + (princ (strcat "\n Einfuegen bei: X=" (rtos (car aktueller-punkt) 2 2) + ", Y=" (rtos (cadr aktueller-punkt) 2 2) + ", Z=" (rtos (caddr aktueller-punkt) 2 2))) (setq block (InsertBlock blockname aktueller-punkt 1.0)) (Rotate3D-Y block aktueller-punkt 3) - (setq aktueller-punkt (get-block-endpoint-rotated block aktueller-punkt 3 motorstation-laenge)) - (princ (strcat "\n → Endpunkt: X=" (rtos (car aktueller-punkt) 2 2) + (setq aktueller-punkt (get-block-endpoint-rotated aktueller-punkt 3 motorstation-laenge)) + (princ (strcat "\n Endpunkt: X=" (rtos (car aktueller-punkt) 2 2) + ", Y=" (rtos (cadr aktueller-punkt) 2 2) ", Z=" (rtos (caddr aktueller-punkt) 2 2))) ) (princ "\n FEHLER: Motorstation Datei nicht gefunden.") ) ;; ========================================================== - ;; 9. 2. GEFÄLLESTRECKE (L_GF2) (METHODE 1: rotiert, X per cos, Z per BBox) + ;; 9. 2. GEFÄLLESTRECKE (L_GF2) ;; ========================================================== (if (> L_GF2 0.1) (progn - (princ (strcat "\n9/11: Staustrecke (3° nach unten, Länge=" (rtos L_GF2 2 2) " mm)")) + (princ (strcat "\n\n9/11: Staustrecke (3 Grad, Laenge=" (rtos L_GF2 2 2) " mm)")) (setq blockname (strcat modul-pfad "Staustrecke_SP_1000_mm.dwg")) (if (findfile blockname) (progn + (princ (strcat "\n Einfuegen bei: X=" (rtos (car aktueller-punkt) 2 2) + ", Y=" (rtos (cadr aktueller-punkt) 2 2) + ", Z=" (rtos (caddr aktueller-punkt) 2 2))) (setq block (InsertBlock blockname aktueller-punkt (/ L_GF2 1000.0))) (Rotate3D-Y block aktueller-punkt 3) - (setq aktueller-punkt (get-block-endpoint-rotated block aktueller-punkt 3 L_GF2)) - (princ (strcat "\n → Endpunkt: X=" (rtos (car aktueller-punkt) 2 2) + (setq aktueller-punkt (get-block-endpoint-rotated aktueller-punkt 3 L_GF2)) + (princ (strcat "\n Endpunkt: X=" (rtos (car aktueller-punkt) 2 2) + ", Y=" (rtos (cadr aktueller-punkt) 2 2) ", Z=" (rtos (caddr aktueller-punkt) 2 2))) ) (princ (strcat "\n FEHLER: Blockdatei nicht gefunden: " blockname)) ) ) - (princ "\n9/11: (übersprungen, L_GF2 = 0)") + (princ "\n9/11: (uebersprungen, L_GF2 = 0)") ) ;; ========================================================== - ;; 10. SEPARATOR 2 (METHODE 1: rotiert, X per cos, Z per BBox) + ;; 10. SEPARATOR 2 ;; ========================================================== - (princ "\n10/11: Separator 300mm (3° nach unten)") + (princ "\n\n10/11: Separator 300mm (3 Grad)") (setq blockname (strcat modul-pfad "Staustrecke_Separator_SP_300_mm.dwg")) (if (findfile blockname) (progn + (princ (strcat "\n Einfuegen bei: X=" (rtos (car aktueller-punkt) 2 2) + ", Y=" (rtos (cadr aktueller-punkt) 2 2) + ", Z=" (rtos (caddr aktueller-punkt) 2 2))) (setq block (InsertBlock blockname aktueller-punkt 1.0)) (Rotate3D-Y block aktueller-punkt 3) - (setq aktueller-punkt (get-block-endpoint-rotated block aktueller-punkt 3 separator-laenge)) - (princ (strcat "\n → Endpunkt: X=" (rtos (car aktueller-punkt) 2 2) + (setq aktueller-punkt (get-block-endpoint-rotated aktueller-punkt 3 separator-laenge)) + (princ (strcat "\n Endpunkt: X=" (rtos (car aktueller-punkt) 2 2) + ", Y=" (rtos (cadr aktueller-punkt) 2 2) ", Z=" (rtos (caddr aktueller-punkt) 2 2))) ) (princ "\n FEHLER: Separator 2 Datei nicht gefunden.") ) ;; ========================================================== - ;; 11. EIN_Element_links (feste Werte wie AUS_Element) + ;; 11. EIN_Element_links ;; ========================================================== - (princ "\n11/11: EIN_Element_links") + (princ "\n\n11/11: EIN_Element_links") (setq blockname (strcat modul-pfad "EIN_Element_links.dwg")) (if (findfile blockname) (progn + (princ (strcat "\n Einfuegen bei: X=" (rtos (car aktueller-punkt) 2 2) + ", Y=" (rtos (cadr aktueller-punkt) 2 2) + ", Z=" (rtos (caddr aktueller-punkt) 2 2))) (setq block (InsertBlock blockname aktueller-punkt 1.0)) - ;; Verwenden Sie die manuellen Werte statt BoundingBox - (setq aktueller-punkt (list + (setq aktueller-punkt (list (+ (car aktueller-punkt) ein-dx) (+ (cadr aktueller-punkt) ein-dy) (+ (caddr aktueller-punkt) ein-dz))) - (princ (strcat "\n → EIN_Element Ausgang (manuell): X=" (rtos (car aktueller-punkt) 2 2) + (princ (strcat "\n Endpunkt: X=" (rtos (car aktueller-punkt) 2 2) ", Y=" (rtos (cadr aktueller-punkt) 2 2) ", Z=" (rtos (caddr aktueller-punkt) 2 2))) ) @@ -619,15 +639,62 @@ (princ) ) +;; ============================================================ +;; TEIL 8: FOERDERTEST - Automatischer Test ohne Benutzereingabe +;; Distanz=6000, Hoehe=2000, Richtung=Auf, Start=0/0/0 +;; Speichert als datum-HHMM.dxf +;; ============================================================ +(defun c:FOERDERTEST ( / deltaL deltaH richtung ergebnis + best-winkel L_GF L_VF dateiname) + (setq deltaL 6000) + (setq deltaH 2000) + (setq richtung "Auf") + + (princ "\n=========================================") + (princ "\n FOERDERTEST (automatisch)") + (princ "\n=========================================") + (princ (strcat "\nDistanz: " (rtos deltaL 2 2) " mm")) + (princ (strcat "\nHoehe: " (rtos deltaH 2 2) " mm")) + (princ (strcat "\nRichtung: " richtung)) + (princ "\nStartpunkt: 0, 0, 0") + + (setq ergebnis (berechne-alle-winkel deltaL deltaH richtung)) + (setq best-winkel (car ergebnis) L_GF (cadr ergebnis) L_VF (caddr ergebnis)) + + (if (or (null best-winkel) (null L_GF) (null L_VF) (<= L_GF 0) (<= L_VF 0)) + (progn (princ "\nFEHLER: Kein passender Winkel gefunden!") (princ)) + (progn + (princ (strcat "\n\nGewaehlter Winkel: " (itoa best-winkel) " Grad")) + (princ (strcat "\nL_GF (gesamt): " (rtos L_GF 2 2) " mm")) + (princ (strcat "\nL_GF1 = L_GF2 = " (rtos (/ L_GF 2) 2 2) " mm")) + (princ (strcat "\nL_VF: " (rtos L_VF 2 2) " mm")) + + ;; Foerderanlage einfuegen bei 0,0,0 + (foerderanlage-einfuegen deltaL deltaH richtung best-winkel L_GF L_VF '(0 0 0)) + + ;; Dateiname: datum-HHMM.dxf + (if (getenv "DXFM_RESULTS") + (setq result-pfad (getenv "DXFM_RESULTS")) + (setq result-pfad (strcat modul-pfad "../results")) + ) + (setq dateiname (strcat result-pfad + "/" + (menucmd "M=$(edtime,$(getvar,date),YYYYMODD-HHmm)") + ".dxf")) + (princ (strcat "\n\nSpeichere als: " dateiname)) + (command "_.DXFOUT" dateiname "V" "2018" "16") + (princ "\n\n>>> FOERDERTEST abgeschlossen! <<<") + ) + ) + (princ) +) + ;; ============================================================ ;; START ;; ============================================================ (princ "\n=========================================") -(princ "\n>>> FÖRDERANLAGE GENERATOR v24.3 geladen <<<") -(princ "\n>>> Befehl: FOERDERANLAGE <<<") -(princ "\n>>> Methodenzuordnung: <<<") -(princ "\n>>> - Rotierte Blöcke: X per Berechnung, Z per BoundingBox <<<") -(princ "\n>>> - Nicht-rotierte Blöcke: X und Z per BoundingBox <<<") -(princ "\n>>> - Vertikalbögen: X aus Tabelle, Z per BoundingBox <<<") +(princ "\n>>> FOERDERANLAGE GENERATOR v24.4 geladen <<<") +(princ "\n>>> Befehle: FOERDERANLAGE, FOERDERTEST <<<") +(princ "\n>>> Z-Berechnung: Trigonometrisch + Tabellenwerte <<<") (princ "\n=========================================") (princ) \ No newline at end of file diff --git a/bin/setenv.bat b/bin/setenv.bat index f664a73..ed98b6e 100644 --- a/bin/setenv.bat +++ b/bin/setenv.bat @@ -18,6 +18,7 @@ set "DXFM_DATA=%DXFMAKRO%\data" set "DXFM_CFG=%DXFMAKRO%\cfg" set "DXFM_BLOCKS=%DXFMAKRO%\Blocks" set "DXFM_LISP=%DXFMAKRO%\Lisp" +set "DXFM_RESULTS=%DXFMAKRO%\results" set BRICSCAD="C:\Program Files\Bricsys\BricsCAD V25 de_DE\bricscad.exe" @@ -36,6 +37,7 @@ if not exist "%DXFM_LIB%" mkdir "%DXFM_LIB%" if not exist "%DXFM_DATA%" mkdir "%DXFM_DATA%" if not exist "%DXFM_BLOCKS%" mkdir "%DXFM_BLOCKS%" if not exist "%DXFM_LISP%" mkdir "%DXFM_LISP%" +if not exist "%DXFM_RESULTS%" mkdir "%DXFM_RESULTS%" REM Umgebungsvariablen anzeigen echo. @@ -49,6 +51,7 @@ echo DXFM_LIB = %DXFM_LIB% echo DXFM_DATA = %DXFM_DATA% echo DXFM_BLOCKS = %DXFM_BLOCKS% echo DXFM_LISP = %DXFM_LISP% +echo DXFM_RESULTS = %DXFM_RESULTS% echo PYTHONPATH = %PYTHONPATH% echo ================================================================ echo.