Programs frequently need to perform the same series of expressions multiple times. Rather than copy the same line a given number of times, the (repeat) function simplifies the process.

Explanation: the (repeat) function

(repeat number
… expression
)

The number is the number of times, in integers, to repeat the enclosed expressions.

Provided you can predetermine the number of loops desired, the (repeat) function is the simplest choice.

Example

(defun c:MCIRCLE ()
(setq NUMBER (getint “\nEnter number of circles: “))
(setq CENTER (getpoint “\nSelect center point: “))
(setq INCREMENT (getdist “\nEnter radius increment: “))
(repeat NUMBER
;_ end of repeat
(princ)

) ;_ end of defun

• A complete solution to this exercise is on your class disk as MCIRCLE-A.LSP.

Note: With the (repeat) function and the other branching and looping functions, it is a good programming technique to indent all the arguments to the looping or branching function for easier readability. Visual LISP will do this for you automatically as you type or when you use the Format buttons.

PRACTICE

Modify the BOX1.LSP routine to include a prompt for the number of boxes to be drawn.

Solution

(defun c:BOX1 ()
(graphscr)
(setq CE-SAV (getvar “cmdecho”))
(setvar “cmdecho” 0)
(setq CC-SAV (getvar “cecolor”))
(initget 1 “Red Yellow Blue”)
(setq CLR (getkword “\nSelect Red/Yellow/Blue: “)) (setvar “cecolor” CLR)
(initget 1)
(repeat (getint “\nEnter number of boxes: “)
(initget 1)
(setq PT1 (getpoint “\nFirst corner of box: ”))
(initget 1)
(setq PT2 (getcorner PT1 “\nOpposite corner: ”))
(setq X1 (car PT1))
(setq X2 (car PT2))