ROTATE ON 45 DGR LOOP
COPY THE CODE TO A NOTE PAD AND NAME IS R045.LSP. DRAG AND DROP TO YOUR CAD SELECT ANY BLOCK WHICH HAS AXIAL BASE POINT THEN LET THE BLOCK DANCE FOR YOU LOL
;; RO45 AutoLISP Routine (defun c:RO45 (/ ent ename data base current_ang key ss) (setq ent (entsel "\nSelect block to rotate: ")) (if (and ent (= "INSERT" (cdr (assoc 0 (setq data (entget (setq ename (car ent)))))))) (progn (setq base (cdr (assoc 10 data))) (setq current_ang (cdr (assoc 50 data))) ;; Create a selection set and "Grip-Highlight" it (setq ss (ssadd ename)) (sssetfirst nil ss) (princ "\n[TAB] Rotate 45° | [ENTER/SPACE] Accept | [ESC] Cancel") (while (setq key (grread nil 12 1)) (cond ;; TAB Key (ASCII 9) ((equal key '(2 9)) (setq current_ang (+ current_ang (/ pi 4))) (setq data (subst (cons 50 current_ang) (assoc 50 data) data)) (entmod data) ;; Re-highlight after modification (sssetfirst nil ss) ) ;; Exit on Enter (13) or Space (32) ((or (equal key '(2 13)) (equal key '(2 32))) (setq key nil) ) ;; Right Click or Escape ((member (car key) '(11 25)) (setq key nil) ) ) ) (princ "\nRotation set.") ) (princ "\nEntity is not a block.") ) (princ) )