乐筑天下

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

[编程交流] 第一个代码(获取错误,共个)

[复制链接]

3

主题

10

帖子

7

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 20:12:07 | 显示全部楼层 |阅读模式
今天上班的时候,我第一次开始接触AutoLISP,所以请容忍我,因为我确信我的代码很难看
 
我的第一个程序涉及选择一系列点,该程序将围绕相交区域绘制周长矩形。这部分代码工作得很好(因此无需发布)。
 
我现在尝试向代码中添加另一个功能,它会询问是否有竖梃或横框,如果有,请在竖梃/横框上选择两个点,程序会在之前绘制的周长矩形内绘制一个额外的矩形。
 
我遇到的问题是,一旦输入“m”或“t”,程序就会跳过第一个getpoint问题,因此我无法获得变量pt9或pt11。相反,它只询问第二个getpoint问题,并在试图找到交点时崩溃,因为它缺少变量。有没有解决这个问题的建议?
 
  1. (defun c:test (/ oldosmode pt5 pt6 pt7 pt8 pt9 pt10 pt11 pt12 mutr TLpt TRpt MTpt MBpt)
  2.          
  3. (setq pt5 (getpoint "Choose Head Leftmost Stud:    "))
  4. (setq pt6 (getpoint "Choose Head Rightmost Stud:    "))
  5.           (setq pt7 (getpoint "Choose Sill Leftmost Stud:    "))
  6. (setq pt8 (getpoint "Choose Sill Rightmost Stud:    "))
  7. (setq mutr (getstring "Mullion(m)/Transom(t)/None(n)"))
  8. (cond ((= mutr "t") (
  9. (setq pt9 (getpoint "Select Leftmost Stud on Transom:    "))
  10. (setq pt10 (getpoint "Select Rightmost Stud on Transom:    "))
  11. (setq TLpt (inters pt1 pt2 pt9 pt10 [onseg]))
  12. (setq TRpt (inters pt3 pt4 pt9 pt10 [onseg]))
  13. (setq oldosmode (getvar "osmode"))
  14.           (setvar "osmode" 0)
  15. (command "_rectangle" "_from" TLpt "@5,-5" "_from" TRpt "@-5,5" "")
  16. (setvar "osmode" oldosmode)
  17.                 ))
  18.       ((= mt "m") (
  19. (setq pt11 (getpoint "Select Upper Stud on Mullion:    "))
  20. (setq pt12 (getpoint "Select Lower Stud on Mullion:    "))
  21. (setq MTpt (inters pt5 pt6 pt11 pt12 [onseg]))
  22. (setq MBpt (inters pt7 pt8 pt11 pt12 [onseg]))
  23. (setq oldosmode (getvar "osmode"))
  24.           (setvar "osmode" 0)
  25. (command "_rectangle" "_from" MTpt "@5,-5" "_from" MBpt "@-5,5" "")
  26. (setvar "osmode" oldosmode)
  27.                 ))
  28. )
  29. (princ) ; Exit Cleanly
  30. )
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 20:31:34 | 显示全部楼层
试试看,每秒钟只删除两个括号。不确定它是否工作正常。不确定没有图像或dwg它在做什么。
  1. (cond ((= mutr "t")
  2. (setq pt9 (getpoint "Select Leftmost Stud on Transom:    "))
  3. (setq pt10 (getpoint "Select Rightmost Stud on Transom:    "))
  4. (setq TLpt (inters pt1 pt2 pt9 pt10 [onseg]))
  5. (setq TRpt (inters pt3 pt4 pt9 pt10 [onseg]))
  6. (setq oldosmode (getvar "osmode"))
  7.    (setvar "osmode" 0)
  8. (command "_rectangle" "_from" TLpt "@5,-5" "_from" TRpt "@-5,5" "")
  9. (setvar "osmode" oldosmode)
  10. )
  11.       ((= mt "m")
  12. (setq pt11 (getpoint "Select Upper Stud on Mullion:    "))
  13. (setq pt12 (getpoint "Select Lower Stud on Mullion:    "))
  14. (setq MTpt (inters pt5 pt6 pt11 pt12 [onseg]))
  15. (setq MBpt (inters pt7 pt8 pt11 pt12 [onseg]))
  16. (setq oldosmode (getvar "osmode"))
  17.    (setvar "osmode" 0)
  18. (command "_rectangle" "_from" MTpt "@5,-5" "_from" MBpt "@-5,5" "")
  19. (setvar "osmode" oldosmode)
  20. )
  21. )
回复

使用道具 举报

24

主题

1265

帖子

1028

银币

后起之秀

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

铜币
362
发表于 2022-7-5 20:45:02 | 显示全部楼层
我没有看每一行,但最初我看到:
 
(=mt“m”)可能应该是(=mutr“m”)
您应该允许用户输入大写或小写
你的(cond)语句有太多的括号(在(=)语句之后的括号,它对应的结束语应该删除)
回复

使用道具 举报

3

主题

10

帖子

7

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 21:00:22 | 显示全部楼层
谢谢大家,我把这些建议拼凑在一起,我想我现在已经完成了。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 21:14:10 | 显示全部楼层
看看initget,你可以强制回答你想要的。(setq mutr(getstring“Mullion(m)/Transom(t)/None(n)”)我会设置一个检查并使用一段时间,因此必须回答正确的按None或n
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 08:53 , Processed in 0.657263 second(s), 62 queries .

© 2020-2025 乐筑天下

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