;align block atributes "ByBlock"
(defun c:RotAtt0 (/ ent etdata rot)
 (mapcar '(lambda (x)
           (setq ent x
                 rot (cdr (assoc 50 (entget ent))))
           (and (and (> rot (* pi 0.5)) (<= rot (* pi 1.5)))
                (while (/= "SEQEND" (cdr (assoc 0 (setq etdata (entget (setq ent (entnext ent)))))))
                 (and (= "ATTRIB" (cdr (assoc 0 etdata)))
                      (entmod (subst (cons 50 (+ pi (cdr (assoc 50 etdata)))) (assoc 50 etdata) etdata))))))
         (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "INSERT") (66 . 1))))))) ; all INS with Att
 (princ))