乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 15|回复: 11

[编程交流] 绘制楼梯

[复制链接]

30

主题

96

帖子

66

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
150
发表于 2022-7-6 09:51:19 | 显示全部楼层 |阅读模式
大家好,
我试图写一个函数来绘制楼梯的基本轮廓。
有一两次它对我非常有效。但在那之后,它只是画了一些垃圾。有人能看看下面的代码并提出一些建议吗?
 
 
  1. (defun c:Stp()
  2. (setq Point (getpoint "\nPick a Point:"))
  3. (setq Rise (getdist "\nEnter rise of each step:"))
  4. (setq Tread (getdist "\nEnter tread of each step:"))
  5. (setq Nos (getint "\nEnter number of steps:"))
  6. (setq LandingAt (Getint "Number of steps in first flight:"))
  7. (setq P1 (list (car Point) (cadr Point)))
  8. (setq LandingLength (getdist "\nEnter Length of Landing:"))
  9. (setq n 0)
  10. (While (< n Nos)
  11. (if
  12. (<= n LandingAt)
  13. (Progn ;If True
  14.    (Setq
  15.      P2 (polar Point (GetRad 90) Rise)
  16.      P3 (Polar P2 0 Tread)
  17.    )
  18. )
  19. (progn ;Else
  20.    (Setq
  21.      P2 (polar Point (GetRad 90) Rise)
  22.      P3 (Polar P2 (GetRad 180) Tread)
  23.    )
  24. )
  25. )
  26.    (command "LINE" Point P2 P3 "")
  27.    (Setq Point P3)
  28.    (setq n (1+ n))
  29. );While Ends
  30. );STP Ends
  31. ;======================================::::::
  32. ;Function to Convert Degrees to Radians::::::
  33. ;======================================::::::
  34. (defun GetRad(Ang)
  35. (/ (* 3.14 Ang) 180)
  36. )

 
应该是这样的。
 
  1. (defun c:Stp()

 
  1. (defun c:Stp ()

 
应该是
 
  1. (defun GetRad(Ang)

除此之外,请将您的论点本地化。
 
这是很好的练习,伙计。
 
当做
 
塔瓦特
回复

使用道具 举报

59

主题

327

帖子

268

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
295
发表于 2022-7-6 10:00:21 | 显示全部楼层
当然我会。。。
 
这是我从零开始认真学习Autolisp的第四天。。。
因此,我在这里得到的任何建议都将非常有价值。。!!!
谢谢。。。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 10:03:17 | 显示全部楼层
只是有这样的冲动:
 
  1. (defun GetRad (Ang)

 
做起来很有趣,我只是一个学习者;-)
回复

使用道具 举报

30

主题

96

帖子

66

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
150
发表于 2022-7-6 10:08:05 | 显示全部楼层
这将避免与捕捉点混淆。
 
  1. (defun c:Stp (/ Point Rise Tread Nos LandingAt P1 LandingLength n P2 P3 OsmodeOld)
  2. (setq Point       (getpoint "\nPick a Point:")
  3. Rise       (getdist "\nEnter rise of each step:")
  4. Tread       (getdist "\nEnter tread of each step:")
  5. Nos       (getint "\nEnter number of steps:")
  6. LandingAt     (Getint "\nNumber of steps in first flight:")
  7. P1       (list (car Point) (cadr Point))
  8. LandingLength (getdist "\nEnter Length of Landing:")
  9. n       0
  10. OsmodeOld     (getvar "OSMODE")
  11. ) ;_setq
  12. (setvar "OSMODE" 0)
  13. (While
  14.    (< n Nos)
  15.     (if
  16.       (<= n LandingAt)
  17. (Progn ;If True
  18.   (Setq
  19.     P2 (polar Point (GetRad 90) Rise)
  20.     P3 (Polar P2 0 Tread)
  21.   ) ;_setq
  22. ) ;_progn
  23. (progn ;Else
  24.   (Setq
  25.     P2 (polar Point (GetRad 90) Rise)
  26.     P3 (Polar P2 (GetRad 180) Tread)
  27.   ) ;_setq
  28. ) ;_progn
  29.     )
  30.     (vl-cmdf "_.LINE" Point P2 P3 "")
  31.     (Setq Point P3
  32.    n (1+ n)
  33.     ) ;_setq
  34. ) ;While Ends
  35. (setvar "OSMODE" OsmodeOld)
  36. (princ)
  37. ) ;STP Ends
  38. ;======================================::::::
  39. ;Function to Convert Degrees to Radians::::::
  40. ;======================================::::::
  41. (defun GetRad (Ang)
  42. (/ (* 3.14 Ang) 180)
  43. )
  44. ;|«Visual LISP© Format Options»
  45. (120 2 2 2 nil "Ende von " 100 9 0 0 0 T T nil T)
  46. ;*** DO NOT add text below the comment! ***|;

 
塔瓦特
回复

使用道具 举报

59

主题

327

帖子

268

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
295
发表于 2022-7-6 10:18:20 | 显示全部楼层
回复

使用道具 举报

30

主题

96

帖子

66

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
150
发表于 2022-7-6 10:23:05 | 显示全部楼层
Still OSMODE was not set when I did it. I set it to '0' at the beginning and it it worked.
Thankyou MacroW for the revised code...!!
回复

使用道具 举报

59

主题

327

帖子

268

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
295
发表于 2022-7-6 10:27:53 | 显示全部楼层
You are right, too much hurrie is no good, code above is updated.
回复

使用道具 举报

30

主题

96

帖子

66

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
150
发表于 2022-7-6 10:34:53 | 显示全部楼层
Thankyou...!!!
回复

使用道具 举报

30

主题

96

帖子

66

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
150
发表于 2022-7-6 10:36:27 | 显示全部楼层
Thankyou All,
I modified my code, atlast, like this;

[code](defun c:Stp (/ Point Rise Tread Nos LandingAt P1 LandingLength n P2 P3 OSM) (setq Point (getpoint "\nPick a Point:")) (Setq OSM (getvar "OSMODE")) (setvar "OSMODE" 0) (setq Rise (getdist "\nEnter rise of each step:")        Tread (getdist "\nEnter tread of each step:")        Nos (getint "\nEnter number of steps:")        LandingAt (Getint "Number of steps in first flight:")        LandingLength (getdist "\nEnter length of the landing:")        P1 (list (car Point) (cadr Point))        n 0 ) ;_setq  (setq LandingDrawn 0)  (While (< n Nos)   (if     (
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 10:40:35 | 显示全部楼层
Good to hear .
 
Best regards .
 
Tharwat
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-2 20:32 , Processed in 0.554808 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表