代码改变世界

AutoLISP圆形堆栈金字塔

2011-03-28 09:53  精诚所至 金石为开  阅读(358)  评论(0编辑  收藏  举报

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)
)

代码完。