;======================================================================= ; MIR.Lsp Jun 23, 1996 ; Rotate Mutliple Blocks Around Their Insertion Point ;================== Start Program ====================================== (princ "\nCopyright (C) 1996, Fabricated Designs, Inc.") (princ "\nLoading MIR v1.3 ") (setq mir_ nil lsp_file "MIR") ;================== Macros ============================================= (defun PDot ()(princ ".")) (PDot);++++++++++++ Set Modes & Error ++++++++++++++++++++++++++++++++++ (defun mir_smd () (SetUndo) (setq olderr *error* *error* (lambda (e) (while (> (getvar "CMDACTIVE") 0) (command)) (and (/= e "quit / exit abort") (princ (strcat "\nError: *** " e " *** "))) (command "_.UNDO" "_END" "_.U") (mir_rmd)) mir_var '(("CMDECHO" . 0) ("MENUECHO" . 0) ("MENUCTL" . 0) ("MACROTRACE" . 0) ("OSMODE" . 0) ("SORTENTS" . 119) ("MODEMACRO" . ".") ("BLIPMODE" . 0) ("SNAPMODE" . 1) ("HIGHLIGHT" . 1) ("REGENMODE" . 1) ("COORDS" . 2))) (foreach v mir_var (setq mir_rst (cons (cons (car v) (getvar (car v))) mir_rst)) (setvar (car v) (cdr v))) (princ (strcat (getvar "PLATFORM") " Release " (ver) " - Rotate Multiple BLOCKS ....\n")) (princ)) (PDot);++++++++++++ Return Modes & Error +++++++++++++++++++++++++++++++ (defun mir_rmd () (setq *error* olderr) (foreach v mir_rst (setvar (car v) (cdr v))) (command "_.UNDO" "_END") (prin1)) (PDot);++++++++++++ Set And Start An Undo Group ++++++++++++++++++++++++ (defun SetUndo () (and (zerop (getvar "UNDOCTL")) (command "_.UNDO" "_ALL")) (and (= (logand (getvar "UNDOCTL") 2) 2) (command "_.UNDO" "_CONTROL" "_ALL")) (and (= (logand (getvar "UNDOCTL") 8) 8) (command "_.UNDO" "_END")) (command "_.UNDO" "_GROUP")) (PDot);************ Main Program *************************************** (defun mir_ (/ olderr mir_var mir_rst ss ra i en ip) (mir_smd) (while (not ss) (princ "\nSelect BLOCKs To Rotate...") (setq ss (ssget '((0 . "INSERT"))))) (initget 3) (setq ra (getreal "\nAngle In Degrees To ROTATE: ")) (setq i (sslength ss)) (while (not (minusp (setq i (1- i)))) (setq en (ssname ss i) ip (cdr (assoc 10 (entget en)))) (command "_.ROTATE" en "" ip ra)) (mir_rmd)) (PDot);************ Load Program *************************************** (defun C:MIR () (mir_)) (if mir_ (princ "\nMIR Loaded\n")) (prin1) ;|================== End Program =======================================