两点等分,圆改XLINE怎么写
(defun c:tt()(setvar "CMDECHO" 0)
(setqp1 (getpoint "\n第一点:")
p2 (getpoint p1 "\n第二点:")
)
;;;两点距离
(princ
(strcat "\n****两点距离:" (rtos (distance p1 p2) 2 3))
)
;;;等分数量:
(setq n (getint "\n等分数量:"))
;;;等分子函数,根据两点点及等分数量得出等分点列表
(defun tt-df (p1 p2 n)
(if(> (1- n) 0)
(cons (polar p1 (angle p1 p2) (/ (distance p1 p2) n 1.0))
(tt-df (polar p1 (angle p1 p2) (/ (distance p1 p2) n 1.0))
p2
(1- n)
)
)
)
)
;;;等分点列表
(setq lst (tt-df p1 p2 n))
;;; 起点、终点、等分点处画园
(mapcar '(lambda (x) (vl-cmdf "CIRCLE" x 1.0))
(append (list p1) lst (list p2))
)
(prin1)
) 感谢分享感谢分享感谢分享 路过的大师请帮忙,谢谢! ;;; 起点、终点、等分点处画园
(mapcar '(lambda (x) (vl-cmdf "CIRCLE" x 1.0))
(append (list p1) lst (list p2))
)
(prin1)
) 现在等分后的标记是圆,想改成等分后的标记是XLINE,怎么改呀,请大侠帮忙! 示意图片! 有解决了么? (defun c:tt ()
(setvar "CMDECHO" 0)
(defun tt-df (p1 p2 nn / dd rr ptn)
(setq dd (/ (distance p1 p2) nn 1.0)
rr (angle p1 p2)
)
(repeat (1- nn)
(setq p1 (polar p1 rr dd)
ptn (cons p1 ptn)
)
)
(reverse ptn)
)
(setq p1 (getpoint "\n第一点: ")
p2 (getpoint p1 "\n第二点: ")
nn (Uint 7 "" "等分数量" nn)
rr (angle p1 p2)
)
(foreach x (tt-df p1 p2 nn)(vl-cmdf "xline" x (polar x (+ rr (* pi 0.5)) 1.0) ""))
(princ)
) 跳出错误!!!!! 有人帮忙看看吗?谢谢了 (defun c:tt ()
(setvar "CMDECHO" 0)
(defun tt-df (p1 p2 nn / dd rr ptn)
(setq dd (/ (distance p1 p2) nn 1.0)
rr (angle p1 p2)
ptn (list p1)
)
(repeat (1- nn)
(setq p1 (polar p1 rr dd)
ptn (cons p1 ptn)
)
)
(reverse(cons p2 ptn))
)
(setq p1 (getpoint "\n第一点: ")
p2 (getpoint p1 "\n第二点: ")
nn (getint "\n等分数量")
rr (angle p1 p2)
)
(foreach x (tt-df p1 p2 nn)(vl-cmdf "xline" x (polar x (+ rr (* pi 0.5)) 1.0) ""))
(princ)
)
页:
[1]
2