Code:
;; Drehen des Modellbereiches im Papierbereich
;; Jan Tappenbeck, Ebl
;;
;; Historie
;;(defun c:EBL_MSRot
(/ set_mspace
restore_space set_ucs
restore_ucs *EBL_MSRot_Space*
*EBL_MSRot_UCS*
)
(defun set_mspace (/)
(command "_.MSPACE")
(setq *EBL_MSRot_Space* T)
)
(defun restore_space (/)
(if *EBL_MSRot_Space*
(progn
(command "_.MSPACE")
(setq *EBL_MSRot_Space* nil)
) ;end-progn
) ;endif
)
(defun set_ucs (/)
(command "_.UCS" "_W")
(setq *EBL_MSRot_UCS* T)
)
(defun restore_ucs (/)
(if *EBL_MSRot_UCS*
(progn
(command "_.UCS" "_P")
(setq *EBL_MSRot_UCS* nil)
) ;end-progn
) ;endif
)
;;Zwischensichern der Systemvariablen
(modes
'("CMDECHO"
"OSMODE"
"DIMZIN"
)
)
(SETVAR "CMDECHO" 0)
;;Bildschirmausgabe
;;Setzen eines Zurück-Punktes
(COMMAND "_.UNDO" "_Begin")
;;ggf. setzen erforderlicher Systemvariablen
(SETVAR "OSMODE" 0)
(SETVAR "DIMZIN" 3)
;;Objektfang
(SETQ
;;Sichern der "aktuellen" Fehlerroutine
old_err
*error*
;;Setzen der internen Fehlerroutine
*error*
EBL_MSRot_err
)
(*push-error-using-command*)
(if (= (getvar "tilemode") 1)
(alert
"Diese Funktion kann nur im Layoutbereich angewandt werden!"
)
(progn
(set_mspace)
(set_ucs)
(if (setq PA (getpoint "\n1. Punkt der Grundlinie (links): "))
(progn
(if (setq
PE (getpoint PA "\n2. Punkt der Grundlinie (rechts): ")
)
(progn
) ;end-progn
(princ
"\nbenutzerdefinierter Abbruch, da kein 2. Punkt gewählt"
)
) ;endif - PE
) ;end-progn
(princ
"\nbenutzerdefinierter Abbruch, da kein 1. Punkt gewählt"
)
) ;endif - PA
) ;end-progn
) ;endif
;;setzen der "alten" Fehlerroutine
(SETQ *error* old_err)
(*pop-error-mode*)
;; (restore_space)
;; (restore_ucs)
;;setzen eines Zurück-Punktes
(COMMAND "_.UNDO" "_End")
;;Zurücksetzen der Systemvariablen
(moder)
;;bereinigen der Befehlszeile
(PRINC)
;; hier endet die Funktion
)
;;end-defun
;;interne Fehlerroutine - u.a. für das Zurücksetzen der Systemvariablen
(DEFUN EBL_MSRot_err (s)
;;Ausgabe der Fehlermeldung
(IF (/= s "Funktion abgebrochen")
(PRINC (STRCAT "\nFehler: " s))
)
;;setzen der "alten" Fehlerroutine
(SETQ *error* old_err)
(restore_space)
(restore_ucs)
;; (if (>= (atoi (substr (getvar "ACADVER") 1 2)) 20.)
;; (progn ; AB AutoCAD 2015
;;setzen eines Zurück-Punktes
;; (COMMAND-S "_.UNDO" "_End")
;;Zurücksetzen der Funktion
;; (COMMAND-S "_u")
;; ) ;end-progn
;; (progn ;VOR AutoCAD 2015
;;setzen eines Zurück-Punktes
(COMMAND "_.UNDO" "_End")
;;Zurücksetzen der Funktion
(COMMAND "_u")
;; ) ;end-progn
;; ) ;endif-ACADVER
;;Zurücksetzen der Systemvariablen
(moder)
;;bereinigen der Befehlszeilen
(PRINC)
)
;;Unterprogramme für die Systemvariablen-Sicherung
(DEFUN modes (a)
;;Speichern
(SETQ mlst '())
(REPEAT (LENGTH a)
(SETQ mlst (APPEND mlst (LIST (LIST (CAR a) (GETVAR (CAR a))))))
(SETQ a (CDR a))
)
)
(DEFUN moder ()
;;Zurückspeichern
(REPEAT (LENGTH mlst)
(SETVAR (CAAR mlst) (CADAR mlst))
(SETQ mlst (CDR mlst))
)
)
;|«Visual LISP© Format Options»
(72 2 40 1 nil "end of " 60 9 0 0 0 T T nil T)
;*** KEINEN Text unterhalb des Kommentars hinzufügen! ***|;