Merge branch 'master' of https://gitea.schoenenberger.de/m.stangl/dxfmakros
This commit is contained in:
+336
-28
@@ -12,8 +12,17 @@
|
||||
(if (getenv "DXFM_BLOCKS")
|
||||
(setq modul-pfad (strcat (getenv "DXFM_BLOCKS") "/"))
|
||||
(progn
|
||||
(alert "Umgebungsvariable DXFM_BLOCKS nicht gesetzt! Verwende Standardpfad.")
|
||||
(setq modul-pfad "c:/10-Develop/gitrepos/dxfmakros/Blocks/")
|
||||
(alert "Umgebungsvariable DXFM_BLOCKS nicht gesetzt!\nBitte zuerst bin\\setenv.bat ausfuehren.")
|
||||
(exit)
|
||||
)
|
||||
)
|
||||
|
||||
;; 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)
|
||||
)
|
||||
)
|
||||
(setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))
|
||||
@@ -158,6 +167,211 @@
|
||||
(if (and (numberp x) (not (equal x nil))) (rtos x 2 2) "---")
|
||||
)
|
||||
|
||||
;; ============================================================
|
||||
;; TEIL 4b: KS_EIN / KS_AUS KOORDINATEN EXTRAHIEREN
|
||||
;; ============================================================
|
||||
|
||||
;; Grad-Zeichen fuer Blocknamen
|
||||
(setq grad-zeichen (chr 176)) ;; °
|
||||
|
||||
;; Berechne die Laenge eines 3D-Vektors
|
||||
(defun vec-length (v)
|
||||
(sqrt (+ (* (car v) (car v)) (* (cadr v) (cadr v)) (* (caddr v) (caddr v))))
|
||||
)
|
||||
|
||||
;; Bestimme die Achse anhand der Linienlaenge innerhalb eines KS-Blocks
|
||||
;; KS_EIN: X=1, Y=2, Z=3
|
||||
;; KS_AUS: X=100, Y=2, Z=3
|
||||
(defun ks-line-axis (len)
|
||||
(cond
|
||||
((< (abs (- len 1.0)) 0.5) "X")
|
||||
((< (abs (- len 100.0)) 0.5) "X")
|
||||
((< (abs (- len 2.0)) 0.5) "Y")
|
||||
((< (abs (- len 3.0)) 0.5) "Z")
|
||||
(t nil)
|
||||
)
|
||||
)
|
||||
|
||||
;; Importiere Blockdefinitionen aus der Koordinaten-Bibliothek.
|
||||
;; Fuegt die DWG temporaer ein (dadurch werden alle Blockdefs geladen)
|
||||
;; und loescht die Einfuegung sofort wieder.
|
||||
(defun load-koordinaten-lib ( / temp-obj)
|
||||
(if (findfile koordinaten-lib)
|
||||
(progn
|
||||
(princ "\n Lade Blockdefinitionen aus Koordinaten-Bibliothek...")
|
||||
(setq temp-obj (vla-InsertBlock modelspace
|
||||
(vlax-3D-point '(0 0 0))
|
||||
koordinaten-lib
|
||||
1.0 1.0 1.0 0))
|
||||
(vla-Delete temp-obj)
|
||||
(princ " OK.")
|
||||
t
|
||||
)
|
||||
(progn
|
||||
(princ (strcat "\n FEHLER: Koordinaten-Bibliothek nicht gefunden: " koordinaten-lib))
|
||||
nil
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; Extrahiere KS_EIN und KS_AUS Koordinaten aus einem eingefuegten Bogen-Block.
|
||||
;; Der Block wird temporaer explodiert, die KS-Daten ausgelesen,
|
||||
;; alle explodierten Entities wieder geloescht. Der Original-Block bleibt erhalten.
|
||||
;; Gibt eine assoc-Liste zurueck:
|
||||
;; (("KS_EIN" (origin x-end y-end z-end x-dir y-dir z-dir))
|
||||
;; ("KS_AUS" (origin x-end y-end z-end x-dir y-dir z-dir)))
|
||||
;; origin/x-end/y-end/z-end = 3D-Punkte (Weltkoordinaten)
|
||||
;; x-dir/y-dir/z-dir = normalisierte Richtungsvektoren des KOS
|
||||
(defun extract-ks-from-block (block-obj / sub-entities sub-obj
|
||||
ks-results ks-ref inner-entities inner-obj
|
||||
line-start line-end line-vec line-len axis
|
||||
origin x-end y-end z-end)
|
||||
(setq ks-results '())
|
||||
|
||||
;; Block explodieren (erzeugt neue Entities, Original bleibt)
|
||||
(setq sub-entities (vlax-invoke block-obj 'Explode))
|
||||
|
||||
(foreach sub-obj sub-entities
|
||||
(if (and (not (vlax-erased-p sub-obj))
|
||||
(= (vla-get-ObjectName sub-obj) "AcDbBlockReference")
|
||||
(or (= (vla-get-Name sub-obj) "KS_EIN")
|
||||
(= (vla-get-Name sub-obj) "KS_AUS")))
|
||||
(progn
|
||||
(setq ks-ref (vla-get-Name sub-obj))
|
||||
|
||||
;; KS-Block exploden um die Linien mit Weltkoordinaten zu lesen
|
||||
(setq inner-entities (vlax-invoke sub-obj 'Explode))
|
||||
(setq origin nil x-end nil y-end nil z-end nil)
|
||||
|
||||
(foreach inner-obj inner-entities
|
||||
(if (and (not (vlax-erased-p inner-obj))
|
||||
(= (vla-get-ObjectName inner-obj) "AcDbLine"))
|
||||
(progn
|
||||
(setq line-start (vlax-safearray->list (vlax-variant-value (vla-get-StartPoint inner-obj))))
|
||||
(setq line-end (vlax-safearray->list (vlax-variant-value (vla-get-EndPoint inner-obj))))
|
||||
(setq line-vec (list (- (car line-end) (car line-start))
|
||||
(- (cadr line-end) (cadr line-start))
|
||||
(- (caddr line-end) (caddr line-start))))
|
||||
(setq line-len (vec-length line-vec))
|
||||
(setq axis (ks-line-axis line-len))
|
||||
;; Ursprung = gemeinsamer Startpunkt aller Linien
|
||||
(if (null origin) (setq origin line-start))
|
||||
(cond
|
||||
((= axis "X") (setq x-end line-end))
|
||||
((= axis "Y") (setq y-end line-end))
|
||||
((= axis "Z") (setq z-end line-end))
|
||||
)
|
||||
)
|
||||
)
|
||||
;; Temporaere innere Objekte loeschen
|
||||
(if (not (vlax-erased-p inner-obj)) (vla-Delete inner-obj))
|
||||
)
|
||||
|
||||
;; Richtungsvektoren berechnen (Endpunkt - Ursprung, normalisiert)
|
||||
(setq x-dir nil y-dir nil z-dir nil)
|
||||
(if (and origin x-end)
|
||||
(progn
|
||||
(setq x-dir (list (- (car x-end) (car origin))
|
||||
(- (cadr x-end) (cadr origin))
|
||||
(- (caddr x-end) (caddr origin))))
|
||||
(setq vlen (vec-length x-dir))
|
||||
(if (> vlen 0.001)
|
||||
(setq x-dir (list (/ (car x-dir) vlen) (/ (cadr x-dir) vlen) (/ (caddr x-dir) vlen)))
|
||||
)
|
||||
)
|
||||
)
|
||||
(if (and origin y-end)
|
||||
(progn
|
||||
(setq y-dir (list (- (car y-end) (car origin))
|
||||
(- (cadr y-end) (cadr origin))
|
||||
(- (caddr y-end) (caddr origin))))
|
||||
(setq vlen (vec-length y-dir))
|
||||
(if (> vlen 0.001)
|
||||
(setq y-dir (list (/ (car y-dir) vlen) (/ (cadr y-dir) vlen) (/ (caddr y-dir) vlen)))
|
||||
)
|
||||
)
|
||||
)
|
||||
(if (and origin z-end)
|
||||
(progn
|
||||
(setq z-dir (list (- (car z-end) (car origin))
|
||||
(- (cadr z-end) (cadr origin))
|
||||
(- (caddr z-end) (caddr origin))))
|
||||
(setq vlen (vec-length z-dir))
|
||||
(if (> vlen 0.001)
|
||||
(setq z-dir (list (/ (car z-dir) vlen) (/ (cadr z-dir) vlen) (/ (caddr z-dir) vlen)))
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; Ergebnis: (name (origin x-end y-end z-end x-dir y-dir z-dir))
|
||||
(setq ks-results (cons
|
||||
(list ks-ref (list origin x-end y-end z-end x-dir y-dir z-dir))
|
||||
ks-results))
|
||||
|
||||
(princ (strcat "\n " ks-ref " Koordinatensystem:"))
|
||||
(if origin (princ (strcat "\n Ursprung: ("
|
||||
(rtos (car origin) 2 4) ", " (rtos (cadr origin) 2 4) ", " (rtos (caddr origin) 2 4) ")")))
|
||||
(if x-end (princ (strcat "\n X-Ende: ("
|
||||
(rtos (car x-end) 2 4) ", " (rtos (cadr x-end) 2 4) ", " (rtos (caddr x-end) 2 4) ")")))
|
||||
(if y-end (princ (strcat "\n Y-Ende: ("
|
||||
(rtos (car y-end) 2 4) ", " (rtos (cadr y-end) 2 4) ", " (rtos (caddr y-end) 2 4) ")")))
|
||||
(if z-end (princ (strcat "\n Z-Ende: ("
|
||||
(rtos (car z-end) 2 4) ", " (rtos (cadr z-end) 2 4) ", " (rtos (caddr z-end) 2 4) ")")))
|
||||
(if x-dir (princ (strcat "\n X-Richtung: ("
|
||||
(rtos (car x-dir) 2 6) ", " (rtos (cadr x-dir) 2 6) ", " (rtos (caddr x-dir) 2 6) ")")))
|
||||
(if y-dir (princ (strcat "\n Y-Richtung: ("
|
||||
(rtos (car y-dir) 2 6) ", " (rtos (cadr y-dir) 2 6) ", " (rtos (caddr y-dir) 2 6) ")")))
|
||||
(if z-dir (princ (strcat "\n Z-Richtung: ("
|
||||
(rtos (car z-dir) 2 6) ", " (rtos (cadr z-dir) 2 6) ", " (rtos (caddr z-dir) 2 6) ")")))
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; Alle explodierten Objekte loeschen
|
||||
(foreach sub-obj sub-entities
|
||||
(if (not (vlax-erased-p sub-obj)) (vla-Delete sub-obj))
|
||||
)
|
||||
|
||||
ks-results
|
||||
)
|
||||
|
||||
;; Bogen-Block aus der Koordinaten-Bibliothek einfuegen und KS-Daten extrahieren.
|
||||
;; bogen-name = Blockname ohne Grad-Zeichen (z.B. "Vario_Bogen_auf_3")
|
||||
;; einfuege-punkt = Punkt an dem der Block eingefuegt wird
|
||||
;; Gibt die KS-Ergebnisse zurueck. Der Block bleibt eingefuegt.
|
||||
(defun insert-bogen-from-lib (bogen-name einfuege-punkt / full-name block-obj ks-data)
|
||||
(setq full-name (strcat bogen-name grad-zeichen))
|
||||
(princ (strcat "\n Fuege Block '" full-name "' ein..."))
|
||||
|
||||
;; Blockdefinitionen laden (falls noch nicht geschehen)
|
||||
(if (not (tblsearch "BLOCK" full-name))
|
||||
(load-koordinaten-lib)
|
||||
)
|
||||
|
||||
;; Block per Name einfuegen
|
||||
(if (tblsearch "BLOCK" full-name)
|
||||
(progn
|
||||
(setq block-obj (vla-InsertBlock modelspace
|
||||
(vlax-3D-point einfuege-punkt)
|
||||
full-name
|
||||
1.0 1.0 1.0 0))
|
||||
(princ (strcat "\n Einfuegen bei: X=" (rtos (car einfuege-punkt) 2 2)
|
||||
", Y=" (rtos (cadr einfuege-punkt) 2 2)
|
||||
", Z=" (rtos (caddr einfuege-punkt) 2 2)))
|
||||
|
||||
;; KS-Koordinaten extrahieren
|
||||
(princ "\n Extrahiere Koordinatensysteme...")
|
||||
(setq ks-data (extract-ks-from-block block-obj))
|
||||
|
||||
ks-data
|
||||
)
|
||||
(progn
|
||||
(princ (strcat "\n FEHLER: Block '" full-name "' nicht in Bibliothek gefunden!"))
|
||||
nil
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; ============================================================
|
||||
;; ActiveX Block einfügen (返回对象)
|
||||
;; ============================================================
|
||||
@@ -279,11 +493,9 @@
|
||||
;; TEIL 6: MODULE EINFÜGEN (mit korrigierter Methodenzuordnung)
|
||||
;; ============================================================
|
||||
(defun foerderanlage-einfuegen (deltaL deltaH richtung
|
||||
best-winkel L_GF L_VF startpunkt)
|
||||
best-winkel L_GF1 L_GF2 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...")
|
||||
@@ -380,28 +592,54 @@
|
||||
)
|
||||
|
||||
;; ==========================================================
|
||||
;; 5. 1. VERTIKALBOGEN (X und Z aus Tabelle)
|
||||
;; 5. 1. VERTIKALBOGEN (aus Koordinaten-Bibliothek oder Fallback)
|
||||
;; ==========================================================
|
||||
(if (= richtung "Auf")
|
||||
(progn
|
||||
(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-lib-name (strcat "Vario_Bogen_auf_" (itoa best-winkel)))
|
||||
(princ (strcat "\n\n5/11: " bogen-lib-name))
|
||||
(setq bogen-mass (get-bogen-mass bogen-auf-unten best-winkel))
|
||||
)
|
||||
(progn
|
||||
(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-lib-name (strcat "Vario_Bogen_ab_" (itoa best-winkel)))
|
||||
(princ (strcat "\n\n5/11: " bogen-lib-name))
|
||||
(setq bogen-mass (get-bogen-mass bogen-ab-oben best-winkel))
|
||||
)
|
||||
)
|
||||
;; Versuche Block aus Koordinaten-Bibliothek zu laden
|
||||
(setq ks-data-1 (insert-bogen-from-lib bogen-lib-name aktueller-punkt))
|
||||
(if ks-data-1
|
||||
(progn
|
||||
;; Endpunkt aus KS_AUS Ursprung ableiten
|
||||
(setq ks-aus-1 (cadr (assoc "KS_AUS" ks-data-1)))
|
||||
(if ks-aus-1
|
||||
(progn
|
||||
(setq aktueller-punkt (car ks-aus-1))
|
||||
(princ (strcat "\n Endpunkt (aus KS_AUS): X=" (rtos (car aktueller-punkt) 2 2)
|
||||
", Y=" (rtos (cadr aktueller-punkt) 2 2)
|
||||
", Z=" (rtos (caddr aktueller-punkt) 2 2)))
|
||||
)
|
||||
(progn
|
||||
(princ "\n WARNUNG: KS_AUS nicht gefunden, verwende Tabellenwerte")
|
||||
(setq bogen-x (car bogen-mass) bogen-dz (caddr bogen-mass))
|
||||
(setq aktueller-punkt (get-block-endpoint-bogen aktueller-punkt bogen-x bogen-dz))
|
||||
)
|
||||
)
|
||||
)
|
||||
(progn
|
||||
;; Fallback: alte Einzelbloecke verwenden
|
||||
(princ "\n Fallback: Verwende Einzel-DWG-Bloecke")
|
||||
(if (= richtung "Auf")
|
||||
(setq blockname (strcat modul-pfad "Vertikalbogen_Auf_" (itoa best-winkel) "_Unten.dwg"))
|
||||
(setq blockname (strcat modul-pfad "Vertikalbogen_Ab_" (itoa best-winkel) "_Oben.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))
|
||||
(setq bogen-x (car bogen-mass))
|
||||
(setq bogen-dz (caddr bogen-mass))
|
||||
(setq bogen-x (car bogen-mass) 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)
|
||||
@@ -410,6 +648,8 @@
|
||||
)
|
||||
(princ (strcat "\n FEHLER: Bogen-Datei nicht gefunden: " blockname))
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; ==========================================================
|
||||
;; 6. VARIABLE STRECKE L_VF
|
||||
@@ -446,28 +686,54 @@
|
||||
)
|
||||
|
||||
;; ==========================================================
|
||||
;; 7. 2. VERTIKALBOGEN (X und Z aus Tabelle)
|
||||
;; 7. 2. VERTIKALBOGEN (aus Koordinaten-Bibliothek oder Fallback)
|
||||
;; ==========================================================
|
||||
(if (= richtung "Auf")
|
||||
(progn
|
||||
(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-lib-name (strcat "Vario_Bogen_auf_" (itoa best-winkel)))
|
||||
(princ (strcat "\n\n7/11: " bogen-lib-name " (2. Bogen)"))
|
||||
(setq bogen-mass (get-bogen-mass bogen-auf-oben best-winkel))
|
||||
)
|
||||
(progn
|
||||
(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-lib-name (strcat "Vario_Bogen_ab_" (itoa best-winkel)))
|
||||
(princ (strcat "\n\n7/11: " bogen-lib-name " (2. Bogen)"))
|
||||
(setq bogen-mass (get-bogen-mass bogen-ab-unten best-winkel))
|
||||
)
|
||||
)
|
||||
;; Versuche Block aus Koordinaten-Bibliothek zu laden
|
||||
(setq ks-data-2 (insert-bogen-from-lib bogen-lib-name aktueller-punkt))
|
||||
(if ks-data-2
|
||||
(progn
|
||||
;; Endpunkt aus KS_AUS Ursprung ableiten
|
||||
(setq ks-aus-2 (cadr (assoc "KS_AUS" ks-data-2)))
|
||||
(if ks-aus-2
|
||||
(progn
|
||||
(setq aktueller-punkt (car ks-aus-2))
|
||||
(princ (strcat "\n Endpunkt (aus KS_AUS): X=" (rtos (car aktueller-punkt) 2 2)
|
||||
", Y=" (rtos (cadr aktueller-punkt) 2 2)
|
||||
", Z=" (rtos (caddr aktueller-punkt) 2 2)))
|
||||
)
|
||||
(progn
|
||||
(princ "\n WARNUNG: KS_AUS nicht gefunden, verwende Tabellenwerte")
|
||||
(setq bogen-x (car bogen-mass) bogen-dz (caddr bogen-mass))
|
||||
(setq aktueller-punkt (get-block-endpoint-bogen aktueller-punkt bogen-x bogen-dz))
|
||||
)
|
||||
)
|
||||
)
|
||||
(progn
|
||||
;; Fallback: alte Einzelbloecke verwenden
|
||||
(princ "\n Fallback: Verwende Einzel-DWG-Bloecke")
|
||||
(if (= richtung "Auf")
|
||||
(setq blockname (strcat modul-pfad "Vertikalbogen_Auf_" (itoa best-winkel) "_Oben.dwg"))
|
||||
(setq blockname (strcat modul-pfad "Vertikalbogen_Ab_" (itoa best-winkel) "_Unten.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))
|
||||
(setq bogen-x (car bogen-mass))
|
||||
(setq bogen-dz (caddr bogen-mass))
|
||||
(setq bogen-x (car bogen-mass) 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)
|
||||
@@ -476,6 +742,8 @@
|
||||
)
|
||||
(princ (strcat "\n FEHLER: Bogen-Datei nicht gefunden: " blockname))
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; ==========================================================
|
||||
;; 8. MOTORSTATION
|
||||
@@ -574,7 +842,8 @@
|
||||
;; ============================================================
|
||||
(defun c:FOERDERANLAGE ( / eingabe-modus startpunkt endpunkt differenz
|
||||
deltaL deltaH deltaY richtung ergebnis
|
||||
best-winkel L_GF L_VF ergebnis-liste antwort)
|
||||
best-winkel L_GF L_GF1 L_GF2 L_VF
|
||||
ergebnis-liste antwort verteilung-modus)
|
||||
(princ "\n=========================================")
|
||||
(princ "\n FÖRDERANLAGE GENERATOR v24.3")
|
||||
(princ "\n=========================================")
|
||||
@@ -627,13 +896,51 @@
|
||||
(princ "\n\n=========================================")
|
||||
(princ (strcat "\n>>> Empfohlener Winkel: " (itoa best-winkel) "°"))
|
||||
(princ (strcat "\n>>> L_GF (gesamt): " (rtos L_GF 2 2) " mm"))
|
||||
(princ (strcat "\n>>> L_GF1 = L_GF2 = " (rtos (/ L_GF 2) 2 2) " mm"))
|
||||
(princ (strcat "\n>>> L_VF: " (rtos L_VF 2 2) " mm"))
|
||||
(princ "\n=========================================")
|
||||
|
||||
;; Verteilung der Gefaellestrecken (L_GF1 vorne, L_GF2 hinten)
|
||||
(princ "\n\nVerteilung der Gefaellestrecken (vorne/hinten):")
|
||||
(princ "\n 1 - Gleichmaessig (L_GF1 = L_GF2 = L_GF/2)")
|
||||
(princ "\n 2 - Vorne Minimum, hinten Rest")
|
||||
(princ "\n 3 - Hinten Minimum, vorne Rest")
|
||||
(princ "\n 4 - Eigene Werte eingeben")
|
||||
(setq verteilung-modus (getstring "\nIhre Wahl (1/2/3/4) [1]: "))
|
||||
(if (= verteilung-modus "") (setq verteilung-modus "1"))
|
||||
(cond
|
||||
((= verteilung-modus "1")
|
||||
(setq L_GF1 (/ L_GF 2.0))
|
||||
(setq L_GF2 (/ L_GF 2.0))
|
||||
)
|
||||
((= verteilung-modus "2")
|
||||
(setq L_GF1 staustrecke-basis)
|
||||
(setq L_GF2 (- L_GF staustrecke-basis))
|
||||
(if (< L_GF2 0) (setq L_GF2 0))
|
||||
)
|
||||
((= verteilung-modus "3")
|
||||
(setq L_GF2 staustrecke-basis)
|
||||
(setq L_GF1 (- L_GF staustrecke-basis))
|
||||
(if (< L_GF1 0) (setq L_GF1 0))
|
||||
)
|
||||
((= verteilung-modus "4")
|
||||
(setq L_GF1 (getreal (strcat "\nL_GF1 vorne (mm) [" (rtos (/ L_GF 2.0) 2 2) "]: ")))
|
||||
(if (null L_GF1) (setq L_GF1 (/ L_GF 2.0)))
|
||||
(setq L_GF2 (- L_GF L_GF1))
|
||||
(if (< L_GF2 0) (setq L_GF2 0))
|
||||
(princ (strcat "\n L_GF2 hinten (berechnet): " (rtos L_GF2 2 2) " mm"))
|
||||
)
|
||||
(t
|
||||
(setq L_GF1 (/ L_GF 2.0))
|
||||
(setq L_GF2 (/ L_GF 2.0))
|
||||
)
|
||||
)
|
||||
(princ (strcat "\n\n>>> L_GF1 (vorne): " (rtos L_GF1 2 2) " mm"))
|
||||
(princ (strcat "\n>>> L_GF2 (hinten): " (rtos L_GF2 2 2) " mm"))
|
||||
|
||||
(princ "\n\nMöchten Sie die Förderanlage einfügen?\n 1 - Ja, Module einfügen\n 2 - Nein, abbrechen")
|
||||
(setq antwort (getstring "\nIhre Wahl (1/2): "))
|
||||
(if (= antwort "1")
|
||||
(foerderanlage-einfuegen deltaL deltaH richtung best-winkel L_GF L_VF startpunkt-fuer-einfuegen)
|
||||
(foerderanlage-einfuegen deltaL deltaH richtung best-winkel L_GF1 L_GF2 L_VF startpunkt-fuer-einfuegen)
|
||||
(princ "\nVorgang abgebrochen.")
|
||||
)
|
||||
(princ)
|
||||
@@ -641,13 +948,13 @@
|
||||
|
||||
;; ============================================================
|
||||
;; TEIL 8: FOERDERTEST - Automatischer Test ohne Benutzereingabe
|
||||
;; Distanz=6000, Hoehe=2000, Richtung=Auf, Start=0/0/0
|
||||
;; Distanz=8000, Hoehe=3000, 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 deltaL 8000)
|
||||
(setq deltaH 3000)
|
||||
(setq richtung "Auf")
|
||||
|
||||
(princ "\n=========================================")
|
||||
@@ -666,11 +973,12 @@
|
||||
(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_GF1 (vorne): " (rtos (/ L_GF 2.0) 2 2) " mm"))
|
||||
(princ (strcat "\nL_GF2 (hinten): " (rtos (/ L_GF 2.0) 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))
|
||||
;; Foerderanlage einfuegen bei 0,0,0 (gleichmaessige Verteilung)
|
||||
(foerderanlage-einfuegen deltaL deltaH richtung best-winkel (/ L_GF 2.0) (/ L_GF 2.0) L_VF '(0 0 0))
|
||||
|
||||
;; Dateiname: datum-HHMM.dxf
|
||||
(if (getenv "DXFM_RESULTS")
|
||||
|
||||
Reference in New Issue
Block a user