I ended up going with this, works well! Allows you to do multiple copy
;;; CopyRotate.lsp by Charles Alan Butler
;;; by Precision Drafting & Design All Rights Reserved.
;;; Contact at ab2draft[at]TampaBay.rr.com
;;;
;;; Version 4.0 Beta Feb 07,2005
;;;
;;; DESCRIPTION
;;; User pick base point then selects object(s)
;;; Paste mode until Escape is pressed
;;; Once pasted user selects rotation angle
;;;
;;; Command Line Usage
;;; Command: copyr
;; Copy objects, then paste & rotate new copy
;; does not show the objects during paste
(defun c:copyr (/ pt ss elast ssnew)
;; Rune Wold and Michael Puckett - modified ale_lastent ale_ss-after
(defun ale_lastent (/ entnam outval)
(and
(setq outval (entlast))
(while (setq entnam (entnext outval))
(setq outval entnam)
)
)
outval
)
(defun ale_ss-after (entnam / entnxt selset)
(cond
((not entnam) (ssget "_X"))
((setq entnxt (entnext entnam))
(setq selset (ssadd entnxt))
(while (setq entnxt (entnext entnxt))
(if (entget entnxt)
(ssadd entnxt selset)
)
)
selset
)
)
)
(if (and (setq pt (getpoint "\nPick base point of object to copy:"))
(null (prompt "\nSelect objects to copy:"))
(setq ss (ssget))
)
(progn
(command "._copybase" pt ss "")
(while (setq pt (getpoint "\nPick insertion point."))
;; get last item in database
(setq elast (ale_lastent))
(command "._pasteclip" pt)
;; get new items pasted.
(setq ssnew (ale_ss-after elast))
;; allow user to rotate
(command "._rotate" ssnew "" pt pause)
) ; while
) ; progn
) ; endif
(princ)
)
(princ)
:ugly:
<edit CAB: updated with lates code version>