AutoLISP圆形堆栈金字塔,根据层数和圆半径绘制圆的堆栈,代码如下。
(defun c:test()
(setvar "cmdecho" 0)
(setq pt1 (getpoint "\n起点:"))
(setq pt2 (getpoint pt1 "\n终点:"))
(setq nn (getint "\n堆栈数<10>:"))
(if (null nn) (setq nn 10))
(setq dd (distance pt1 pt2))
(setq ang (angle pt1 pt2))
(setq rr (/ (/ dd (1- nn)) 2))
(setq nn2 nn)
(repeat nn
(setq bas pt1)
(repeat nn2
(command "circle" bas rr)
(setq bas (polar bas ang (* rr 2)))
)
(setq nn2 (1- nn2))
(setq pt1 (polar pt1 (+ ang (/ (* 60 pi) 180)) (* rr 2)))
)
(prin1)
)
代码完。