Ok try this one....
;;;----------------------------------------------------------------------------
;;;
;;; RMANY.LSP Version 2.0
;;;
;;; Copyright (C) 1998-2004 by K. Blackie
;;;
;;; Permission to use, copy, modify, and distribute this software
;;; for any purpose and without fee is hereby granted, provided
;;; that the above copyright notice appears in all copies and that
;;; both that copyright notice and this permission notice appear in
;;; all supporting documentation.
;;;
;;; THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED
;;; WARRANTY. ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR
;;; PURPOSE AND OF MERCHANTABILITY ARE HEREBY DISCLAIMED.
;;;
;;; 14 March 1998
;;; 26 November 1999
;;; 12 January 2004
;;;
;;;----------------------------------------------------------------------------
;;; DESCRIPTION
;;;----------------------------------------------------------------------------
;;; C:RMANY
;;;
;;; This function allows a user to rotate many objects at once by
;;; selecting several objects and then specifying a rotation angle.
;;; Note however that the rotation angle will be from the current
;;; angle of the entity, ie. if the current angle is 45 degrees and
;;; you specify rotation of 45 degrees the new angle of the entity
;;; will be 90 degrees.
;;;
;;; Changes in version 2.0 include the ability to select a multiple
;;; number of entities and rotate them individually around its own
;;; axis at a specified angle or rotate them individually by specifying
;;; an angle for each entity. This option puts the object at the angle
;;; specified from 0 degrees
;;;
;;;----------------------------------------------------------------------------
(defun C:RMANY( / ss ans oce)
(setq oce (getvar "CMDECHO"))
(setvar "CMDECHO" 0)
(princ "\nSelect objects to rotate: ")
(setq ss (ssget))
(initget "Each Auto")
(setq ans (getkword "\nEach/<Auto>: "))
(do_each ans ss )
(setvar "CMDECHO" oce)
)
(defun do_each ( eoa ss / ssl rpt ca ra i do-once )
(setq ssl (sslength ss))
(setq i 0)
(repeat ssl
(setq rpt(cdr(assoc 10(entget(setq e(ssname ss i))))))
(cond
((= eoa "Each")(setq ra (getangle rpt "\nRotation angle: ")))
((not do-once)(setq ra (getstring "\nRotation angle: "))(setq do-once T))
)
(if do-once
(command "rotate" e "" rpt ra)
(progn
(if (= (cdr(assoc 50 (entget e))) nil)
(entmod (subst (cons 11 (polar rpt ra (distance rpt (cdr(assoc 11(entget e)))))) (assoc 11 (entget e))(entget e)))
(entmod (subst (cons 50 ra)(assoc 50 (entget e))(entget e)))
)
)
)
(setq i (+ 1 i))
)
)
(princ "\n -- Multiple Object Rotate Ver. 2.0 -- start command with --> RMANY ")
(princ "\n -- Copyright (C) 1998-2004 by K.E. Blackie ")
(princ)