;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Dynamischer Verhalten des Objektfangs abhängig von der Ansichtsrichtung ;;; auf das aktuelle BKS ;;; Anregung durch CAD.de Beitrag ;;; ;;; www.CAD-Huebner.de - Udo Hübner 9.12.2007 ;;; Update 1.1 Berücksichtigung der Ansichtsfensterumschaltung ;;; Version 1.0 - Ersteinrichtung ;;; Version 1.1 Reaktor auf CVPORT = Ansichtsfensterumschaltung ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Hier wird das dynamische Verhalten von OSNAPZ implementiert ;;; überwacht wird dabei VIEWDIR, sollte der Ansichtsvektor nicht normal auf ;;; dem aktuellen BKS stehen, wird OSNAPZ auf 0 gesetzt ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Hinweis: ;;; BKS Umschaltung löst u. U. nicht eine sofortige Aktualisierung von ;;; VIEWDIR aus, dann wird auch der Sysvar Reaktor nicht aufgerufen ;;; Dann muss zusätzlich DRSICHT/_PLAN aufgerufen werden, oder es muss ;;; noch ein Command-Reaktor eingerichtet werdern. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; eigentliche Umschaltfunktion ;;; kann ohne Reaktoren auch als Toogle benutzt werden, oder an einen ;;; Command-Reaktor gebunden werden. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun SetupOsnapZ () ; prüfen ob blickrichtung auf BKS "normal" ist (if (and (equal (car (getvar "VIEWDIR")) 0.0 1.0E-10) (equal (cadr (getvar "VIEWDIR")) 0.0 1.0E-10) ) ; schalte bei Bedarf auf 2D (if (= (getvar "OSNAPZ") 0) (progn (Setvar "OSNAPZ" 1) ; 2D Ofang (prompt " OSNAPZ auf 1 aktualisiert. ") ) ) ;else 3D (if (= (getvar "OSNAPZ") 1) (progn (Setvar "OSNAPZ" 0) ; 3 Ofang (prompt " OSNAPZ auf 0 aktualisiert. ") ) ) ) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Funktion zum Setzen der Reaktoren, hier zur Überwachung von VIEWDIR ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun add-sysvar-reactors( / ) (vl-load-com) (if(not *vlr:sysvar-reactor-added*) (progn (vlr-sysvar-reactor nil '( (:vlr-sysVarWillChange . sysvar-start-callback)) ) (vlr-sysvar-reactor nil '( (:vlr-sysVarChanged . sysvar-end-callback)) ) (setq *vlr:sysvar-reactor-added* 'T) ) ) ) ; allgemeine Sysvar-Callback-Funktion ; (vor der Befehlsausführung) ; nur der Vollständigkeit - macht hier gar nichts (defun sysvar-start-callback(reactor argslist / ) ;(princ "sysvar-start-callback") ;(print argslist) (cond ((member(car argslist)'("VIEWDIR" "CVPORT")) 'T ; tue nichts ) ('T 'T) ) ) ; allgemeine Sysvar-Callback-Funktion ; (nach der Befehlsausführung) (defun sysvar-end-callback(reactor argslist / ) ;(princ "sysvar-end-callback") ;(print argslist) (cond ((member(car argslist)'("VIEWDIR" "CVPORT" "UCSNAME" "TILEMODE" "REGENMODE")) (setupOsnapZ) ) ('T 'T) ) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Reaktoren beim Laden starten ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (add-sysvar-reactors) (Prompt "\nDynamischer OSNAPZ ist aktiv - www.CAD-Huebner.de - 9.12.2007") (prin1) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;