CAD lisp 递增直径画圆。帮忙指点以下程序,为何执行后圆的坐标不正确。

(defunC:CC()(princ"\n指定两点间,画0.5到1mm半径的圆50个")(setqd10.5d21num50di(/(-d2d1)(-num1))p1(g... (defun C:CC()
(princ "\n 指定两点间,画0.5到1mm半径的圆50个")
(setq d1 0.5
d2 1
num 50
di (/ (- d2 d1) (- num 1))
p1 (getpoint"\n 指定起点:")
x1 (car p1)
y1 (cadr p1)
p2 (getpoint"\n 指定终点:")
x2 (car p2)
y2 (cadr p2)
y (/ (- y2 y1) (- num 1))
x (/ (- x2 x1) (- num 1))
n 0
p p1
)
(while (< n num)
(command "_circle" p d1)
(setq d1 (+ d1 di)
p (mapcar '+ p (list x y))
n (1+ n )
)
)
)
展开
 我来答
snddd2000
2012-08-17 · TA获得超过4270个赞
知道大有可为答主
回答量:2266
采纳率:0%
帮助的人:1673万
展开全部
捕捉没有关闭,用command时会自动捕捉到点。
(defun C:CC ()

(princ "\n 指定两点间,画0.5到1mm半径的圆50个")

(setqd1 0.5

d2 1

num 50

di (/ (- d2 d1) (- num 1))

p1 (getpoint "\n 指定起点:")

x1 (car p1)

y1 (cadr p1)

p2 (getpoint p1 "\n 指定终点:")

x2 (car p2)

y2 (cadr p2)

y (/ (- y2 y1) (1- num))

x (/ (- x2 x1) (1- num))

n 0

p p1

)
(setq old-osmode (getvar "osmode"))
(setvar "osmode" 0)
(setvar "CMDECHO" 0)
(while (< n num)

(command "_circle" p d1)

(setq d1 (+ d1 di)

p (mapcar '+ p (list x y))

n (1+ n)

)

)
(setvar "osmode" old-osmode)
(princ)
)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式