明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1415|回复: 7

[讨论] [求助]判断句的问题....

[复制链接]
发表于 2011-3-25 16:43:14 | 显示全部楼层 |阅读模式
本帖最后由 a170285 于 2011-3-25 18:27 编辑

这是书上给的练习题..
我按照要求写出来了...但是为什么不管如入L还是R..都会跳过呢?
难道COND这个函数我用错了..还是怎么样呢?

(defun c:8()
   (setq pa (getpoint "\n请点取左下角的点"))
   (setq ww (getdist "\n输入楼梯宽"))
   (setq hh (getdist "\n输入楼梯高"))
   (setq n (getint "\n输入台阶数"))
   (initget 1 "Left Right")
   (setq zy (getkword "\n楼梯方向:[左(L)/右(R)]"))
   (setq hy (strcase zy));大写
   (cond ((= hy "L")
         (setq pb1 (polar pa 0 ww))
         (setq pc1 (polar pb1 (/ pi 2) hh))
         (command "_.line" pa pb1 pc1 "")
         (setq pw1 (/ ww n))
         (setq ph1 (/ hh n))
         (setq pp1 pa)
         (repeat n
             (setq pt11 (polar pp1 (/ pi 2) ph1))
             (setq pt21 (polar pt11 0 pw1))
             (setq pp1 pt21)
             (command "_.line" pp1 pt11 pt21 "")
  )
  )
         ((= hy "R")
         (setq pb2 (polar pa 0 ww))
         (setq pc2 (polar pa (/ pi 2) hh))
         (command "_.line" pc2 pa pb2 "")
         (setq pw2 (/ ww n))
         (setq ph2 (/ hh n))
         (setq pp2 pc2)
         (repeat n
              (setq pt12 (polar pp2 0 pw))
              (setq pt22 (polar pt12 (/ pi 2) ph2))
              (setq pp2 pt22)
              (command "_.line" pp2 tp12 pt22 "")
         )
  )

              ); end cond
              (princ "\n完成任务")
              (prin1)
              );end
              

各位在来看看...还是不行..为什么?
发表于 2011-3-25 17:07:08 | 显示全部楼层
((= zy L)
-->
((= zy "L")

((= zy R)
-->
((= zy "R")

其他未验证 ....
发表于 2011-3-25 17:07:11 | 显示全部楼层
你的错误不只一处,应该将(= zy L)改成(= zy "l"),R的一样。当然了,你还有别的地方有错,可能是算法有错,我刚才没有认真看过程。你试试吧
发表于 2011-3-25 17:10:22 | 显示全部楼层
你不只一处有错,应该把(= zy L)改成(= zy "l"),R也一样,因为字符大小写不一样的吧。不只这里有错。
 楼主| 发表于 2011-3-25 17:18:03 | 显示全部楼层
嗯..谢谢两位.现在我明白了..其他我就自己在改改..看能否达到练习题的要求
 楼主| 发表于 2011-3-25 18:37:53 | 显示全部楼层
还是解决不了问题,..再次请教
发表于 2011-3-25 19:21:17 | 显示全部楼层
条件式这样改 (check GetKword ....)

(= hy "LEFT")
(= hy "RIGHT")

其余算法得有专业知识....
程序内建议关闭捕捉
发表于 2011-3-26 11:18:08 | 显示全部楼层
回复 a170285 的帖子

按这个改吧,也是画楼梯的你将左右向加进去就行了
  1. (defun c:hlt()
  2. (setvar "cmdecho" 0)
  3.   (setvar "osmode" 0)
  4. (setq p1 (getpoint "\n插入点:"))
  5. (setq w (getreal "\n梯宽:"))
  6. (setq h (getreal "\n梯高:"))
  7. (setq n (getint "\n级数:"))
  8. (setq p2 (polar p1 0 w))
  9. (setq p3 (polar p2 (/ pi 2) h))

  10. (command "line" p1 p2 p3 "")

  11. (setq w1 (/ w n))
  12. (setq h1 (/ h n))
  13. (setq pa p1)
  14. (repeat n
  15. (setq pb (polar pa (/ pi 2) h1))
  16. (setq pc (polar pb 0 w1))
  17. (command "line" pa pb pc "")
  18. (setq pa pc)
  19. (prin1)))
  20. (prompt "\n命令:hlt")

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-6-10 13:25 , Processed in 0.160432 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表