AutoLISP直线为底做圆形堆栈

AutoLISP直线为底做圆形堆栈,选取一条直线,做圆形堆栈后删除直线。

(defun c:test()
  (setvar "cmdecho" 0)
  (setq en (car (entsel "\n选取线:")))
  (setq endata (entget en))
  (setq pt1 (cdr (assoc 10 endata)))
  (setq pt2 (cdr (assoc 11 endata)))
  (setq nn (getint "\n堆栈数<10>:"))
  (if (null nn) (setq nn 10))
  (setq dd (distance pt1 pt2))
  (setq ang (angle pt1 pt2))
  (setq rr (/ (/ dd (- nn 1)) 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)))
    )
  (entdel en)
  (prin1)
  )

代码如下。

作者:codee
文章千古事,得失寸心知。


原文地址:https://www.cnblogs.com/bimgoo/p/2502971.html