乐筑天下

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

[编程交流] 计算器有点问题

[复制链接]

59

主题

327

帖子

268

银币

后起之秀

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

铜币
295
发表于 2022-7-6 14:33:22 | 显示全部楼层 |阅读模式
我正在尝试制作我自己的lisp,我的意思是不需要将其他例程剪切/粘贴到我自己的lisp中。这
一个例子是,只要我有想法,我就会“扩展”。
例程功能:绘制具有指定边长的方框。插入点框必须为
从实际插入点偏移一定距离。最后,它应该是可旋转的。
 
这是我目前得到的:
 
  1. (defun c:box1 (/ len leng dist pt1 pt2 pt3 pt4 pt5 pt6)
  2. (setq len (getint "\nLength1:  "))
  3. (setq leng (getint "\nLength2:  "))
  4. (setq dist (getdist "\nDistance:  "))
  5. (setq pt1 (getpoint "\nInsertion:  "))
  6. (setq pt2 (polar pt1 (* pi 0.5) dist))
  7. (setq pt3 (polar pt2 (* 2 (* pi 0.5)) (* len 0.5)))
  8. (setq pt4 (polar pt3 (* pi 0.5) leng))
  9. (setq pt5 (polar pt4 0.0 len))
  10. (setq pt6 (polar pt3 0.0 len))
  11. (command "pline" pt3 pt4 pt5 pt6 pt3 "")
  12. (command "rotate" "l" "" pt1  pause)
  13. (princ)
  14. )

 
我的问题:
 
  1. (defun c:box1 (/ len leng dist pt1 pt2 pt3 pt4 pt5 pt6)

 
没有问题,给定“/”后的变量在我的例程结束后被清除。
 
  1. (setq len (getint "\nLength1:  "))
  2. (setq leng (getint "\nLength2:  "))

 
我有len1和len2,但后来它卡住了,我想len1不能和(polar…)结合使用下面的东西。这就是为什么我取len和leng变量。
 
  1. (setq dist (getdist "\nDistance:  "))

 
没问题。。。
  1. (setq pt1 (getpoint "\nInsertion:  "))

 
没问题。。。
 
我含着泪水计算:
  1. (setq pt2 (polar pt1 (* pi 0.5) dist))

 
Polar表示角度,对吗?
->(*pi 0.5)是我计算的90度。
因此:计算点2,它“极化”到点1,角度为90度,距离称为“dist”。
  1. (setq pt3 (polar pt2 (* 2 (* pi 0.5)) (* len 0.5)))
  2. (setq pt4 (polar pt3 (* pi 0.5) leng))
  3. (setq pt5 (polar pt4 0.0 len))
  4. (setq pt6 (polar pt3 0.0 len))

以上内容必须包含错误/故障,因为它不能正常工作。
 
  1. (command "pline" pt3 pt4 pt5 pt6 pt3 "")
  2. (command "rotate" "l" "" pt1  pause)
  3. (princ)
  4. )

可以
简而言之:
有人能帮我理解计算这个吗?
不要马上给我答案,让我努力吧。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:38:16 | 显示全部楼层
这将有望更好地解释事情,而不仅仅是“给你答案”。
 
  1. [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] c:box1  [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] len leng dist pt1 pt2 pt3 pt4 pt5 pt6[b][color=RED])[/color][/b]
  2. [i][color=#990099]; Define Functions and Localise Variables[/color][/i]
  3. [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] len  [b][color=RED]([/color][/b][b][color=BLUE]getdist[/color][/b] [b][color=#ff00ff]"\nLength1:  "[/color][/b][b][color=RED])[/color][/b]
  4.       
  5.        leng [b][color=RED]([/color][/b][b][color=BLUE]getdist[/color][/b] [b][color=#ff00ff]"\nLength2:  "[/color][/b][b][color=RED])[/color][/b]
  6.        [i][color=#990099]; I'd be more inclined to use "getdist"[/color][/i]
  7.        [i][color=#990099]; so that the user can pick the distance.[/color][/i]
  8.       
  9.        dist [b][color=RED]([/color][/b][b][color=BLUE]getdist[/color][/b] [b][color=#ff00ff]"\nDistance:  "[/color][/b][b][color=RED])[/color][/b]
  10.       
  11.        pt1  [b][color=RED]([/color][/b][b][color=BLUE]getpoint[/color][/b] [b][color=#ff00ff]"\nInsertion:  "[/color][/b][b][color=RED])[/color][/b]
  12.       
  13.        pt2  [b][color=RED]([/color][/b][b][color=BLUE]polar[/color][/b] pt1 [b][color=RED]([/color][/b][b][color=BLUE]*[/color][/b] [b][color=BLUE]pi[/color][/b] [b][color=#009999]0.5[/color][/b][b][color=RED])[/color][/b] dist[b][color=RED])[/color][/b]
  14.       
  15. [i][color=#990099];;;                     + pt2[/color][/i]
  16. [i][color=#990099];;;                     |[/color][/i]
  17. [i][color=#990099];;;                     |[/color][/i]
  18. [i][color=#990099];;;                     + pt1[/color][/i]
  19.       
  20.        pt3  [b][color=RED]([/color][/b][b][color=BLUE]polar[/color][/b] pt2 [b][color=BLUE]pi[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]*[/color][/b] len [b][color=#009999]0.5[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  21.       
  22. [i][color=#990099];;;            +--------+ pt2[/color][/i]
  23. [i][color=#990099];;;           pt3       |[/color][/i]
  24. [i][color=#990099];;;                     |[/color][/i]
  25. [i][color=#990099];;;                     + pt1[/color][/i]
  26.         
  27.       
  28.        pt4  [b][color=RED]([/color][/b][b][color=BLUE]polar[/color][/b] pt3 [b][color=RED]([/color][/b][b][color=BLUE]*[/color][/b] [b][color=BLUE]pi[/color][/b] [b][color=#009999]0.5[/color][/b][b][color=RED])[/color][/b] leng[b][color=RED])[/color][/b]
  29.         
  30. [i][color=#990099];;;           pt4[/color][/i]
  31. [i][color=#990099];;;            +[/color][/i]
  32. [i][color=#990099];;;            |[/color][/i]
  33. [i][color=#990099];;;            |[/color][/i]
  34. [i][color=#990099];;;            +--------+ pt2[/color][/i]
  35. [i][color=#990099];;;           pt3       |[/color][/i]
  36. [i][color=#990099];;;                     |[/color][/i]
  37. [i][color=#990099];;;                     + pt1[/color][/i]
  38.         
  39.       
  40.        pt5  [b][color=RED]([/color][/b][b][color=BLUE]polar[/color][/b] pt4 [b][color=#009999]0.0[/color][/b] len[b][color=RED])[/color][/b]
  41.       
  42. [i][color=#990099];;;           pt4               pt5[/color][/i]
  43. [i][color=#990099];;;            +-----------------+[/color][/i]
  44. [i][color=#990099];;;            |[/color][/i]
  45. [i][color=#990099];;;            |       pt2[/color][/i]
  46. [i][color=#990099];;;            +--------+--------+[/color][/i]
  47. [i][color=#990099];;;           pt3       |       pt6[/color][/i]
  48. [i][color=#990099];;;                     |[/color][/i]
  49. [i][color=#990099];;;                     + pt1[/color][/i]
  50.       
  51.       
  52.        pt6  [b][color=RED]([/color][/b][b][color=BLUE]polar[/color][/b] pt3 [b][color=#009999]0.0[/color][/b] len[b][color=RED])[/color][/b]
  53.        [b][color=RED])[/color][/b]  [i][color=#990099]; End Setq[/color][/i]
  54. [b][color=RED]([/color][/b][b][color=BLUE]command[/color][/b] [b][color=#ff00ff]"_.pline"[/color][/b] pt3 pt4 pt5 pt6 pt3 [b][color=#ff00ff]""[/color][/b][b][color=RED])[/color][/b]
  55. [i][color=#990099]; Remember to use "_." prefix to make it[/color][/i]
  56. [i][color=#990099]; compatible for all language versions.[/color][/i]
  57. [b][color=RED]([/color][/b][b][color=BLUE]command[/color][/b] [b][color=#ff00ff]"_.rotate"[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]entlast[/color][/b][b][color=RED])[/color][/b] [b][color=#ff00ff]""[/color][/b] pt1 pause[b][color=RED])[/color][/b]
  58. [i][color=#990099]; Use "entlast" to detect last entity[/color][/i]
  59. [i][color=#990099]; added to database (hence created).[/color][/i]
  60. [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b]
  61. [i][color=#990099]; Exit Cleanly[/color][/i]
  62. [b][color=RED])[/color][/b] [i][color=#990099]; End box1[/color][/i]
回复

使用道具 举报

59

主题

327

帖子

268

银币

后起之秀

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

铜币
295
发表于 2022-7-6 14:40:40 | 显示全部楼层
 
是的,谢谢李。
 
所以变量“pi”就像180度,因为(*pi 0.5)给出了90度。仅使用pi给出180度角,使用0.0保持在0度。有道理。
 
我喜欢你在例程中放置setq的方式:这样我可以很容易地看到,如果我有适当数量的括号..->().
 
_. 前缀tu始终用作任何命令中的前缀?这样更好吗?
比如(命令“_.ddatte”等。。?
 
奇怪的是:当我打开一个干净的新绘图时,我尝试了这个命令,它有时会绘制“不好”。我的意思是,看起来有一个变量没有正确计算。这是不可能的,因为它有时有效。
 
看到图片了吗,你能把这个放好吗?左图为涂鸦,右图为#$%@向上。
153324io1iq14da0s4zk4p.jpg
153326cf6z5g620999w5e2.jpg
回复

使用道具 举报

59

主题

327

帖子

268

银币

后起之秀

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

铜币
295
发表于 2022-7-6 14:45:59 | 显示全部楼层
我想这可能和_u有关。pline函数,所以我用一个矩形来做这项工作。
 
现在它保持“形状”,但尺寸不正确。例如,我创建了一个1500 x 200 dist 100的盒子。。。
我有一个1423 x 261 dist 100的盒子。
 
啊。。。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:48:49 | 显示全部楼层
 
“pi”是LISP中公认的符号,“polar”函数以弧度表示角度参数,因此是2*pi的分数。
 
 
包含此前缀是一种很好的编码实践,因为它将考虑其他语言的版本。
 
 
当您使用“_.pline”命令时,这将是起作用的OSNAP。
 
你需要关闭它们,然后再打开,以使这个例程保持一致。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:50:37 | 显示全部楼层
这将帮助您关闭OSNAP,但如果您想在此例程中实现完全的“安全”,则需要添加错误处理程序,以便在用户点击Esc时重新打开OSNAP。
 
  1. [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] c:box1  [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] oldos len leng dist pt1 pt2 pt3 pt4 pt5 pt6[b][color=RED])[/color][/b]
  2. [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] oldos [b][color=RED]([/color][/b][b][color=BLUE]getvar[/color][/b] [b][color=#ff00ff]"OSMODE"[/color][/b][b][color=RED])[/color][/b]  [i][color=#990099]; Collect Old OSMODE setting[/color][/i]
  3. [i][color=#990099]; Define Functions and Localise Variables[/color][/i]
  4.        len  [b][color=RED]([/color][/b][b][color=BLUE]getdist[/color][/b] [b][color=#ff00ff]"\nLength1:  "[/color][/b][b][color=RED])[/color][/b]
  5.       
  6.        leng [b][color=RED]([/color][/b][b][color=BLUE]getdist[/color][/b] [b][color=#ff00ff]"\nLength2:  "[/color][/b][b][color=RED])[/color][/b]
  7.        [i][color=#990099]; I'd be more inclined to use "getdist"[/color][/i]
  8.        [i][color=#990099]; so that the user can pick the distance.[/color][/i]
  9.       
  10.        dist [b][color=RED]([/color][/b][b][color=BLUE]getdist[/color][/b] [b][color=#ff00ff]"\nDistance:  "[/color][/b][b][color=RED])[/color][/b]
  11.       
  12.        pt1  [b][color=RED]([/color][/b][b][color=BLUE]getpoint[/color][/b] [b][color=#ff00ff]"\nInsertion:  "[/color][/b][b][color=RED])[/color][/b]
  13.       
  14.        pt2  [b][color=RED]([/color][/b][b][color=BLUE]polar[/color][/b] pt1 [b][color=RED]([/color][/b][b][color=BLUE]*[/color][/b] [b][color=BLUE]pi[/color][/b] [b][color=#009999]0.5[/color][/b][b][color=RED])[/color][/b] dist[b][color=RED])[/color][/b]
  15.       
  16. [i][color=#990099];;;                     + pt2[/color][/i]
  17. [i][color=#990099];;;                     |[/color][/i]
  18. [i][color=#990099];;;                     |[/color][/i]
  19. [i][color=#990099];;;                     + pt1[/color][/i]
  20.       
  21.        pt3  [b][color=RED]([/color][/b][b][color=BLUE]polar[/color][/b] pt2 [b][color=BLUE]pi[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]*[/color][/b] len [b][color=#009999]0.5[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
  22.       
  23. [i][color=#990099];;;            +--------+ pt2[/color][/i]
  24. [i][color=#990099];;;           pt3       |[/color][/i]
  25. [i][color=#990099];;;                     |[/color][/i]
  26. [i][color=#990099];;;                     + pt1[/color][/i]
  27.         
  28.       
  29.        pt4  [b][color=RED]([/color][/b][b][color=BLUE]polar[/color][/b] pt3 [b][color=RED]([/color][/b][b][color=BLUE]*[/color][/b] [b][color=BLUE]pi[/color][/b] [b][color=#009999]0.5[/color][/b][b][color=RED])[/color][/b] leng[b][color=RED])[/color][/b]
  30.         
  31. [i][color=#990099];;;           pt4[/color][/i]
  32. [i][color=#990099];;;            +[/color][/i]
  33. [i][color=#990099];;;            |[/color][/i]
  34. [i][color=#990099];;;            |[/color][/i]
  35. [i][color=#990099];;;            +--------+ pt2[/color][/i]
  36. [i][color=#990099];;;           pt3       |[/color][/i]
  37. [i][color=#990099];;;                     |[/color][/i]
  38. [i][color=#990099];;;                     + pt1[/color][/i]
  39.         
  40.       
  41.        pt5  [b][color=RED]([/color][/b][b][color=BLUE]polar[/color][/b] pt4 [b][color=#009999]0.0[/color][/b] len[b][color=RED])[/color][/b]
  42.       
  43. [i][color=#990099];;;           pt4               pt5[/color][/i]
  44. [i][color=#990099];;;            +-----------------+[/color][/i]
  45. [i][color=#990099];;;            |[/color][/i]
  46. [i][color=#990099];;;            |       pt2[/color][/i]
  47. [i][color=#990099];;;            +--------+--------+[/color][/i]
  48. [i][color=#990099];;;           pt3       |       pt6[/color][/i]
  49. [i][color=#990099];;;                     |[/color][/i]
  50. [i][color=#990099];;;                     + pt1[/color][/i]
  51.       
  52.       
  53.        pt6  [b][color=RED]([/color][/b][b][color=BLUE]polar[/color][/b] pt3 [b][color=#009999]0.0[/color][/b] len[b][color=RED])[/color][/b]
  54.        [b][color=RED])[/color][/b]  [i][color=#990099]; End Setq[/color][/i]
  55. [b][color=RED]([/color][/b][b][color=BLUE]setvar[/color][/b] [b][color=#ff00ff]"OSMODE"[/color][/b] [b][color=#009900]0[/color][/b][b][color=RED])[/color][/b]  [i][color=#990099]; Turn off the OSnaps![/color][/i]
  56. [b][color=RED]([/color][/b][b][color=BLUE]command[/color][/b] [b][color=#ff00ff]"_.pline"[/color][/b] pt3 pt4 pt5 pt6 pt3 [b][color=#ff00ff]""[/color][/b][b][color=RED])[/color][/b]
  57. [i][color=#990099]; Remember to use "_." prefix to make it[/color][/i]
  58. [i][color=#990099]; compatible for all language versions.[/color][/i]
  59. [b][color=RED]([/color][/b][b][color=BLUE]command[/color][/b] [b][color=#ff00ff]"_.rotate"[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]entlast[/color][/b][b][color=RED])[/color][/b] [b][color=#ff00ff]""[/color][/b] pt1 pause[b][color=RED])[/color][/b]
  60. [i][color=#990099]; Use "entlast" to detect last entity[/color][/i]
  61. [i][color=#990099]; added to database (hence created).[/color][/i]
  62. [b][color=RED]([/color][/b][b][color=BLUE]setvar[/color][/b] [b][color=#ff00ff]"OSMODE"[/color][/b] oldos[b][color=RED])[/color][/b]  [i][color=#990099]; Turn OSMODE back on[/color][/i]
  63. [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b]
  64. [i][color=#990099]; Exit Cleanly[/color][/i]
  65. [b][color=RED])[/color][/b] [i][color=#990099]; End box1[/color][/i]
回复

使用道具 举报

59

主题

327

帖子

268

银币

后起之秀

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

铜币
295
发表于 2022-7-6 14:55:03 | 显示全部楼层
李,
 
一切都需要学习。我读到你只有9个月的编程lisp。。。这让我惊讶,学习速度快!谢谢你的帮助。
 
我的下一步将提出新的问题:-),所以我很快会和你们谈谈。
附:你什么时候考试?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:57:24 | 显示全部楼层
 
谢谢Marco
 
我的考试本周五开始-我有7门考试,分10天进行。。。
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 15:01:42 | 显示全部楼层
我发现弧度有一点很有趣:
 
(来自维基百科)
153327b4w5t56rdaudmul0.png
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:03:30 | 显示全部楼层
 
很好的观点David,很好地解释了为什么一个整圆有2*pi,因为周长是2*pi*r。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 00:35 , Processed in 0.634272 second(s), 74 queries .

© 2020-2025 乐筑天下

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