我的第一个lisp程序
看了yrgui老师的“一起学习lisp”第一辑,就想自己也练练。这是论坛上的一道题,试试用程序把他画出来:)
钻研了几天,过程非常枯燥,也非常有趣,现在总算是基本完成了。
把代码贴出来,非常希望得到各位老师的批评指点。:D
;;;该程序用于绘制“转五边”图形
(prompt "\n 启动命令:r5")
(defun c:r5()
;;环境设置
(setvar "cmdecho" 0)
(setvar "osmode" 0)
(setq pc (getpoint "\n输入图形中心: ")
ra (getdist "\n输入大圆半径: ")
rd (* pi -0.5)
coun 1)
;;程序主体
(command "circle" pc ra)
(r5b pc ra coun rd)
(command "circle" pc rm )
;;恢复环境
(setvar "cmdecho" 1)
(setvar "osmode" 4337)
(princ)
);结束defun
;;;定义r5b函数
(defun r5b(pc ra coun rd)
(setq p1 (polar pc (* pi 1.0) ra)
p2 (polar pc (* pi 0.6) ra)
p3 (polar pc (* pi 0.2) ra)
p4 (polar pc (* pi 1.8) ra)
p5 (polar pc (* pi 1.4) ra))
(command "pline" p1 p2 p3 p4 p5 "c")
(command "rotate" "last""" pc rd)
(setq coun (1+ coun))
(if (<= coun 4)
(progn
(setq ra (* ra ( / (sin(* pi 0.3)) (sin(* pi 0.6)))))
(setq rd (- rd (* pi 0.5)))
(setq rm ra)
(r5b pc ra coun rd)
);结束progn函数
);结束if函数
(setq rm (* rm (cos(* pi 0.1))))
);结束defun 原帖由 xuehong51 于 2008-10-15 10:10 发表 http://www.askcad.com/bbs/images/common/back.gif
看了yrgui老师的“一起学习lisp”第一辑,就想自己也练练。
这是论坛上的一道题,试试用程序把他画出来:)
42307
钻研了几天,过程非常枯燥,也非常有趣,现在总算是基本完成了。
42308
把代码贴出来,非常 ...
思路清晰:lol
提点建议:既然是减少重复工作,就得使其具有通用性
回复 #2 baller 的帖子
多亏你的指点阿:)只是看第一集里的图和这个图有点像,那他练练手。
位置和半径可自定,哪里再增加些通用性?
你可不知道,费死劲了:Q
[ 本帖最后由 xuehong51 于 2008-10-15 11:12 编辑 ] 原帖由 xuehong51 于 2008-10-15 10:35 发表 http://www.askcad.com/bbs/images/common/back.gif
多亏你的指点阿:)
只是看第一集里的图和这个图有点像,那他练练手。
位置和半径可自定,哪里再增加些通用性?
你可不知道,费死劲了:Q
我还是泛泛地说下自己的看法吧
你给用户的可控参数越多,这个程序就能做更多的事 你也介绍一下过程啊,昨天还在第一辑里发帖提问,今天就钻研出来了,能否告知哪里出错了,你又是怎么发现并改过来的? 过程坎坷啊,简直是一步一个坎,一言难尽。
昨天的问题通过修改图形文件单位解决,现在也不知所以然:L 厉害了我对这部分一窍不通了 顶你们两位!!!!!!!!!!
页:
[1]