明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1956|回复: 3

[基础] 自动绘制左右方向台阶的问题

[复制链接]
发表于 2010-7-9 11:22:00 | 显示全部楼层 |阅读模式

习题中要求输入台阶左下角点,总宽、总高、阶数、左或右后,自动绘制台阶

我编写了如下代码:

(defun c:t72-2g()
  (setq pa (getpoint "请指定楼梯左下角点:"))
  (setq ww (getdist pa "\n请输入楼梯的总宽度:"))
  (setq hh (getdist pa "\n请输入楼梯的总高度:"))
  (setq n (getint "\n请输入楼梯总阶数:"))
  (initget "r l")
  (setq fx (getkword "右[r]或左[l]:"))
  (setq dw (/ ww n))
  (setq dh (/ hh n))
  ;推求交点pb pc
  (setq pb (polar pa 0 ww))
  (if (= fx "l")
      (progn
      (setq pp pb)
      (setq jiao 0)     
      )
   (progn
      (setq pp pa)
      (setq pa pb)
      (setq jiao (* pi 2))
      )
)
    (setq pc (polar pp (/ pi 2) hh))
    (command "pline" pa pp pc "")
    (setq pp pa) 
    (setq p1 (polar pa (/ pi 2) dh))
       (command "pline")
     (command pa p1)
;进入repeat循环画小台阶
   (repeat n
    (setq p1 (polar pp (/ pi 2) dh))
    (setq p2 (polar p1 jiao dw))
    (command p1 p2)
    (setq pp p2)   
    )
  (command "")
   (prin1) 
  )
(prompt "<t72-2g>快速自动绘制楼梯")
(prin1)

 

运行后不正确,请高人批评指导下。谢谢

 

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2010-7-9 11:41:00 | 显示全部楼层

改进后可以了,主要是是变量jiao 当选定为r时,应为(setq jiao pi)

 (defun c:t72-2g()
  (setq pa (getpoint "请指定楼梯左下角点:"))
  (setq ww (getdist pa "\n请输入楼梯的总宽度:"))
  (setq hh (getdist pa "\n请输入楼梯的总高度:"))
  (setq n (getint "\n请输入楼梯总阶数:"))
  (initget "r l")
  (setq fx (getkword "右[r]或左[l]:"))
  (setq dw (/ ww n))
  (setq dh (/ hh n))
  ;推求交点pb pc
  (setq pb (polar pa 0 ww))
  (if (= fx "l")
      (progn
      (setq pp pb)
      (setq jiao 0)     
      )
   (progn
      (setq pp pa)
      (setq pa pb)
      (setq jiao pi)
      )
)
    (setq pc (polar pp (/ pi 2) hh))
    (command "pline" pa pp pc "")
    (setq pp pa) 
    (setq p1 (polar pp (/ pi 2) dh))
       (command "pline")
     (command pa p1)
;进入repeat循环画小台阶
   (repeat n
    (setq p1 (polar pp (/ pi 2) dh))
    (setq p2 (polar p1 jiao dw))
    (command p1 p2)
    (setq pp p2)   
    )
  (command "")
   (prin1) 
  )
(prompt "<t72-2g>快速自动绘制楼梯")
(prin1)

 

 

 

很高兴,看来还是要多钻研啊。向前辈们多学习

发表于 2010-7-9 21:37:00 | 显示全部楼层
还要加上对捕捉的处理:
  1. (defun c:t72-2g()
  2. (setvar "CMDECHO" 0)
  3. (setq oldos (getvar "OSMODE"))
  4. (setq pa (getpoint "请指定楼梯左下角点:"))
  5. (setq ww (getdist pa "\n请输入楼梯的总宽度:"))
  6. (setq hh (getdist pa "\n请输入楼梯的总高度:"))
  7. (setq n (getint "\n请输入楼梯总阶数:"))
  8. (setvar "OSMODE" 0)
  9. (initget "r l")
  10. (setq fx (getkword "右[r]或左[l]:"))
  11. (setq dw (/ ww n))
  12. (setq dh (/ hh n))
  13.   ;推求交点pb pc
  14. (setq pb (polar pa 0 ww))
  15. (if (= fx "l")
  16.   (setq pp pb jiao 0)
  17.   (setq pp pa pa pb jiao pi)
  18. )
  19. (setq pc (polar pp (/ pi 2) hh))
  20. (command "pline" pa pp pc "")
  21. (setq pp pa)  
  22. (setq p1 (polar pa (/ pi 2) dh))
  23. (command "pline" pa p1)
  24.   ;进入repeat循环画小台阶
  25. (repeat n
  26.   (setq p1 (polar pp (/ pi 2) dh))
  27.   (setq p2 (polar p1 jiao dw))
  28.   (command p1 p2)
  29.   (setq pp p2)   
  30. )
  31. (command "")
  32. (setvar "OSMODE" oldos)
  33. (setvar "CMDECHO" 1)
  34. (prin1)  
  35. )
  36. (prompt "<t72-2g>快速自动绘制楼梯")
  37. (prin1)
 楼主| 发表于 2010-7-15 09:41:00 | 显示全部楼层
谢谢,对捕捉的操作是不是在代码里很重要啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-2-23 00:49 , Processed in 0.198407 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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