xuehong51 发表于 2008-10-15 10:10

我的第一个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

baller 发表于 2008-10-15 10:23

原帖由 xuehong51 于 2008-10-15 10:10 发表 http://www.askcad.com/bbs/images/common/back.gif
看了yrgui老师的“一起学习lisp”第一辑,就想自己也练练。
这是论坛上的一道题,试试用程序把他画出来:)
42307
钻研了几天,过程非常枯燥,也非常有趣,现在总算是基本完成了。
42308
把代码贴出来,非常 ...

思路清晰:lol
提点建议:既然是减少重复工作,就得使其具有通用性

xuehong51 发表于 2008-10-15 10:35

回复 #2 baller 的帖子

多亏你的指点阿:)
只是看第一集里的图和这个图有点像,那他练练手。
位置和半径可自定,哪里再增加些通用性?
你可不知道,费死劲了:Q

[ 本帖最后由 xuehong51 于 2008-10-15 11:12 编辑 ]

baller 发表于 2008-10-15 11:24

原帖由 xuehong51 于 2008-10-15 10:35 发表 http://www.askcad.com/bbs/images/common/back.gif
多亏你的指点阿:)
只是看第一集里的图和这个图有点像,那他练练手。
位置和半径可自定,哪里再增加些通用性?
你可不知道,费死劲了:Q

我还是泛泛地说下自己的看法吧
你给用户的可控参数越多,这个程序就能做更多的事

truezx 发表于 2008-10-15 16:28

你也介绍一下过程啊,昨天还在第一辑里发帖提问,今天就钻研出来了,能否告知哪里出错了,你又是怎么发现并改过来的?

xuehong51 发表于 2008-10-15 16:34

过程坎坷啊,简直是一步一个坎,一言难尽。
昨天的问题通过修改图形文件单位解决,现在也不知所以然:L

pandora宝贝 发表于 2009-3-25 21:54

厉害了我对这部分一窍不通了

windy_wei 发表于 2009-3-26 00:39

顶你们两位!!!!!!!!!!
页: [1]
查看完整版本: 我的第一个lisp程序