leimc 发表于 2007-12-16 22:52

用LISP绘制同心圆


(defun c:txy()
(setvar "cmdecho" 0)
(setq pt (getpoint "\n输入圆心:"))
(setq su (getint "\n同心圆数量:"))
(setq rr (getreal "\n半径递增量:"))
(setq rr2 rr)
(repeat su
(command "circle" pt rr2)
(setq rr2 (+ rr2 rr)))
(prin1))
(prompt "\n命令:txy")
(promot "\n作者:leimc")

大致的解释一下:
(defun c:txy()
'设置一个新CAD命令txy
(setvar "cmdecho" 0)
'关闭命令响应
(setq pt (getpoint "\n输入圆心:"))
'设定变量pt为圆心坐标
(setq su (getint "\n同心圆数量:"))
'设定变量su为想画多少个同心圆
(setq rr (getreal "\n半径递增量:"))
'设定变量rr为每画一个圆后下个圆半径增加多少
(setq rr2 rr)
'设定变量rr2为第一个圆的半径,这里设为=递增量,你也可以自己设,比如setq rr2 5.2,也可以直接在屏幕上截取,半本句改为(setq rr2 pause)
(repeat su       
'循环 次数
(command "circle" pt rr2)
'以圆心pt、半径rr2画圆
(setq rr2 (+ rr2 rr)))
'画完后,下一个圆的半径rr2=现在半径+递增量rr,rr2的值已经变了,然后再以圆心pt、新的半径rr2返回上一句再次画圆,直到画到你设定su次为止
(prin1))
(prompt "\n命令:txy")
看你的啦!

[ 本帖最后由 leimc 于 2007-12-19 00:41 编辑 ]

cad 发表于 2007-12-16 22:55

不错。论坛研究这个的人比较少。希望以后会慢慢的多起来。以后此类帖子请归类为“开发”,不要选择“经验”,谢谢。

denglin 发表于 2007-12-17 20:19

:P 好,顶顶

reenning 发表于 2007-12-17 21:53

高手如此便方便了不少吧

leimc 发表于 2007-12-17 23:58

你要是学会了LISP,真正方便不少的地方,这里表现出来的只是冰山一角。

leimc 发表于 2007-12-19 16:50

哎!┅┅
贴着冷屁股了!

gyc0304 发表于 2009-8-18 18:32

厉害,厉害。值得学习。

刘建平 发表于 2009-8-20 19:04

太牛了
:victory:
页: [1]
查看完整版本: 用LISP绘制同心圆