(defun c:pavi ()
	(setq pontos2d (getvar "osmode"))
	(setq pontos3d (getvar "3dosmode"))
	(setvar "osmode" 0)
	(setvar "3dosmode" 0)
	(command "ucs" (getpoint "Indique o ponto de inserção: ") "")
	(setq nu 0)
	(command "circle" (list 0 0 0) 10)
	(guardar)
	(command "circle" (list (alea 0 10) (alea 0 10) 5) (alea 10 20))
	(guardar)
	(command "circle" (list 0 0 (alea 1 15)) (alea 5 10))
	(guardar)
	(command "ellipse" (list 0 0 0) (list 0 1 0)  (alea 1 5))
	(guardar)
	(command "box" (list -15 -15 0) (list 15 15 15))
	(setq ent1 (entlast))
	(solido)
	(command "intersect" "last" ent1 "")
	(command "ucs" "")
	(setq lista nil)
	(setvar "osmode" pontos2d)
	(setvar "3dosmode" pontos3d)
)

(defun solido ()
	(command "loft")
    (foreach p lista (command p)) 
    (command "" "")
)

(defun guardar ()
	(setq lista (append lista (list (set (read (strcat "entidade" (rtos nu))) (entlast)))))
)

(defun alea ( min max / )
	(+ min (valor (- max min)))
)
(defun valor (num)
	(* num (rnd))
)
(defun rnd (/ modulus multiplier increment random)
  (if (not seed)
    (setq seed (getvar "DATE"))
  )
  (setq modulus    65536
        multiplier 25173
        increment  13849
        seed  (rem (+ (* multiplier seed) increment) modulus)
        random     (/ seed modulus)
  )
)