@Sea-Haven wrote:
....
….
(setq angs '(2 4 7 11 23 35 46))
(setq obj (entsel "Pick obj"))
(setq pt (getpoint "Pick centre point"))
(repeat (setq x (length angs))
(command "rotate" obj "" pt "c" (nth (setq x (- x 1)) angs))
….
That would need to have added to it the making of a Copy each time, not just repeatedly Rotating the selected object. And the selection should be (car obj) [the entity, not the list of the entity and the selection point]. And it works with only one selected object. Also, in an arithmetic progression, there's no need to create an explicit list of angles -- all you need is the initial value which is also the incrementing value.
Here's a way that will allow multiple objects [just as AutoCAD's Arraying commands do], lightly tested:
(defun C:APIA ; = Array Polar at Increasing Angle
(/ ss)
(prompt "\nTo Array object(s) in Polar fashion at Increasing Angle,")
(setq
ss (ssget ":L"); any number of things
ctr (getpoint "\nCenter point: ")
ang (getangle "\nInitial angle and increment: ")
qua (getint "\nNumber of Copies {not including original(s)}: ")
n 1
); setq
(command
"_.copy" ss "" "_none" "0,0" "" ; in place
"_.rotate" "_previous" "" "_none" ctr (angtos ang); Rotates originals, not copies
); command
(repeat (1- qua)
(command
"_.copy" "_previous" "" "_none" "0,0" "" ; continuously re-uses originals
"_.rotate" "_previous" "" "_none" ctr (angtos (* ang (setq n (1+ n))))
); command
); repeat
); defun
And it accepts negative angle values to "Array" in the clockwise direction if that's what you need.
Kent Cooper, AIA