eigenen Test geschrieben, der die Elemente im Varioförderer an den K_EIN und K_AUS Punkten aufreiht, so dass man eventuelle Fehler sehen kann.
This commit is contained in:
+160
@@ -480,3 +480,163 @@
|
||||
(princ "\n\n>>> FOERDERTEST abgeschlossen (12 Foerderer)! <<<")
|
||||
(princ)
|
||||
)
|
||||
|
||||
;; ============================================================
|
||||
;; TEST_KSEINAUS - KS_EIN/KS_AUS Ausrichtungstest
|
||||
;;
|
||||
;; Fuegt alle Vario-Bloecke in 3 Gruppen ein, jeweils 2 Reihen:
|
||||
;; Gruppe 1: Stationaere Elemente (AUS, EIN, Separator, Umlenk, Motor)
|
||||
;; Gruppe 2: Alle Boegen aufwaerts (in Z verschoben)
|
||||
;; Gruppe 3: Alle Boegen abwaerts (in Z verschoben)
|
||||
;;
|
||||
;; Pro Gruppe:
|
||||
;; Reihe A: nach KS_EIN ausgerichtet (KS_EIN X/Y = Referenz-X/Y)
|
||||
;; Reihe B: nach KS_AUS ausgerichtet (KS_AUS X/Y = Referenz-X/Y)
|
||||
;; Luecke von 400mm zwischen den Reihen
|
||||
;; ============================================================
|
||||
|
||||
;; Hilfsfunktion: Eine Liste von Bloecken in 2 Reihen aufreihen
|
||||
;; x-start: X-Position der Gruppe
|
||||
;; y-start: Y-Startposition (wird zurueckgegeben als naechster freier Y)
|
||||
;; z-offset: Z-Verschiebung (fuer Boegen)
|
||||
;; Rueckgabe: naechste freie Y-Position
|
||||
(defun ks-test-reihe (namen x-start y-start z-offset y-abstand y-luecke /
|
||||
bname block-obj ks-data ks-ein ks-aus
|
||||
insert-pt offset-vec y-pos idx)
|
||||
|
||||
;; --- Reihe A: nach KS_EIN ---
|
||||
(princ "\n Reihe KS_EIN:")
|
||||
(setq y-pos y-start)
|
||||
(setq idx 0)
|
||||
|
||||
(foreach bname namen
|
||||
(setq idx (1+ idx))
|
||||
(setq insert-pt (list x-start y-pos z-offset))
|
||||
(setq block-obj (vla-InsertBlock modelspace
|
||||
(vlax-3D-point insert-pt)
|
||||
bname 1.0 1.0 1.0 0))
|
||||
(setq ks-data (extract-ks-from-block block-obj))
|
||||
(setq ks-ein (cadr (assoc "KS_EIN" ks-data)))
|
||||
|
||||
(if ks-ein
|
||||
(progn
|
||||
(setq offset-vec (list (- x-start (car (car ks-ein)))
|
||||
(- y-pos (cadr (car ks-ein)))
|
||||
(- z-offset (caddr (car ks-ein)))))
|
||||
(vla-Move block-obj
|
||||
(vlax-3D-point '(0 0 0))
|
||||
(vlax-3D-point offset-vec))
|
||||
(princ (strcat "\n " (itoa idx) ". " bname " OK"))
|
||||
)
|
||||
(princ (strcat "\n " (itoa idx) ". " bname " WARNUNG: KS_EIN fehlt!"))
|
||||
)
|
||||
(setq y-pos (- y-pos y-abstand))
|
||||
)
|
||||
|
||||
;; --- Luecke ---
|
||||
(setq y-pos (- y-pos y-luecke))
|
||||
|
||||
;; --- Reihe B: nach KS_AUS ---
|
||||
(princ "\n Reihe KS_AUS:")
|
||||
(setq idx 0)
|
||||
|
||||
(foreach bname namen
|
||||
(setq idx (1+ idx))
|
||||
(setq insert-pt (list x-start y-pos z-offset))
|
||||
(setq block-obj (vla-InsertBlock modelspace
|
||||
(vlax-3D-point insert-pt)
|
||||
bname 1.0 1.0 1.0 0))
|
||||
(setq ks-data (extract-ks-from-block block-obj))
|
||||
(setq ks-aus (cadr (assoc "KS_AUS" ks-data)))
|
||||
|
||||
(if ks-aus
|
||||
(progn
|
||||
(setq offset-vec (list (- x-start (car (car ks-aus)))
|
||||
(- y-pos (cadr (car ks-aus)))
|
||||
(- z-offset (caddr (car ks-aus)))))
|
||||
(vla-Move block-obj
|
||||
(vlax-3D-point '(0 0 0))
|
||||
(vlax-3D-point offset-vec))
|
||||
(princ (strcat "\n " (itoa idx) ". " bname " OK"))
|
||||
)
|
||||
(princ (strcat "\n " (itoa idx) ". " bname " WARNUNG: KS_AUS fehlt!"))
|
||||
)
|
||||
(setq y-pos (- y-pos y-abstand))
|
||||
)
|
||||
|
||||
;; Naechste freie Y-Position zurueckgeben
|
||||
y-pos
|
||||
)
|
||||
|
||||
(defun c:TEST_KSEINAUS ( / stationen boegen-auf-liste boegen-ab-liste
|
||||
bname y-pos y-abstand y-luecke z-bogen)
|
||||
|
||||
;; Bibliothek initialisieren
|
||||
(if (not *lib-initialized*)
|
||||
(init-bibliothek)
|
||||
)
|
||||
|
||||
(ssg-start "TEST_KSEINAUS" '(("OSMODE") ("CECOLOR") ("ATTREQ") ("ATTDIA")))
|
||||
(setvar "OSMODE" 0)
|
||||
(setvar "ATTREQ" 0)
|
||||
(setvar "ATTDIA" 0)
|
||||
|
||||
(setq y-abstand 200)
|
||||
(setq y-luecke 400)
|
||||
(setq z-bogen 2500)
|
||||
|
||||
;; Gruppe 1: Stationaere Elemente
|
||||
(setq stationen (list
|
||||
"_3D_AS_90_links"
|
||||
"Staustrecke_Separator_SP_300_mm"
|
||||
"Vario_Umlenkstation_500mm"
|
||||
"Vario_Motorstation_500mm"
|
||||
"_3D_ES_90_links"
|
||||
))
|
||||
|
||||
;; Gruppe 2+3: Boegen sammeln
|
||||
(setq boegen-auf-liste '())
|
||||
(setq boegen-ab-liste '())
|
||||
(foreach w '(3 6 9 12 15 18 21 27 33 39 45 51)
|
||||
(setq bname (strcat "Vario_Bogen_auf_" (itoa w) grad-zeichen))
|
||||
(if (tblsearch "BLOCK" bname)
|
||||
(setq boegen-auf-liste (append boegen-auf-liste (list bname)))
|
||||
)
|
||||
(setq bname (strcat "Vario_Bogen_ab_" (itoa w) grad-zeichen))
|
||||
(if (tblsearch "BLOCK" bname)
|
||||
(setq boegen-ab-liste (append boegen-ab-liste (list bname)))
|
||||
)
|
||||
)
|
||||
|
||||
(princ "\n================================================================")
|
||||
(princ "\n TEST_KSEINAUS - KS-Ausrichtungstest")
|
||||
(princ (strcat "\n Stationen: " (itoa (length stationen))))
|
||||
(princ (strcat "\n Boegen auf: " (itoa (length boegen-auf-liste))))
|
||||
(princ (strcat "\n Boegen ab: " (itoa (length boegen-ab-liste))))
|
||||
(princ (strcat "\n Z-Offset Boegen: " (rtos z-bogen 2 0) " mm"))
|
||||
(princ "\n================================================================")
|
||||
|
||||
;; Gruppe 1: Stationaere Elemente bei X=0, Z=0
|
||||
(princ "\n\n GRUPPE 1: Stationaere Elemente (Z=0)")
|
||||
(setq y-pos (ks-test-reihe stationen 0 0 0 y-abstand y-luecke))
|
||||
|
||||
;; Gruppe 2: Boegen aufwaerts bei X=3000, Z=z-bogen
|
||||
(princ "\n\n GRUPPE 2: Boegen aufwaerts (Z=" )
|
||||
(princ (strcat (rtos z-bogen 2 0) ")"))
|
||||
(setq y-pos (ks-test-reihe boegen-auf-liste 3000 0 z-bogen y-abstand y-luecke))
|
||||
|
||||
;; Gruppe 3: Boegen abwaerts bei X=6000, Z=z-bogen
|
||||
(princ "\n\n GRUPPE 3: Boegen abwaerts (Z=")
|
||||
(princ (strcat (rtos z-bogen 2 0) ")"))
|
||||
(setq y-pos (ks-test-reihe boegen-ab-liste 6000 0 z-bogen y-abstand y-luecke))
|
||||
|
||||
(ssg-end)
|
||||
|
||||
(princ "\n\n================================================================")
|
||||
(princ "\n TEST_KSEINAUS abgeschlossen")
|
||||
(princ "\n X=0: Stationen (KS_EIN + KS_AUS)")
|
||||
(princ "\n X=3000: Boegen auf (KS_EIN + KS_AUS)")
|
||||
(princ "\n X=6000: Boegen ab (KS_EIN + KS_AUS)")
|
||||
(princ "\n================================================================")
|
||||
(princ)
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user