Da ich leider kein Fachmann im lispln bin, kann ich an Hand der Schnipsel auch nichts erkennen?!?!^^
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; 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)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP