乐筑天下

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

[编程交流] 删除命令Nil和命令

[复制链接]

9

主题

55

帖子

47

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-5 16:37:47 | 显示全部楼层 |阅读模式
这段代码工作得很好,但每次发出时,我都会收到一条错误消息。我知道这很简单,但我想不出来。缺少什么?非常感谢。
 
  1. (defun c:PSTAMPA ( / cl vb ll)
  2.    (setq
  3.        CL (getvar 'clayer)
  4.        vb
  5.        (assoc  
  6.            (progn
  7.                (initget "Preliminary NFC")
  8.                (getkword "Enter Orientation [Preliminary/Nfc]:")
  9.            )
  10.            '(("Preliminary" . "NOTE_PRELIM") ("NFC" . "NOTE_NFC"))
  11.        )
  12.    )
  13.    (if (tblsearch "BLOCK" (cdr vb))
  14.        (
  15.            (progn
  16.                (setq TAB (getvar "CTAB"))
  17.                (foreach LL (layoutlist)
  18.                    (setvar "ctab" LL)
  19.                    (command "layer" "set" "QF-ANNO-NOTE" "" "_.INSERT" (cdr VB) "0,0" "1" "1" "0")
  20.                    (command "mview" "lock" "on" "all" "" (setvar "CTAB" TAB)
  21.                    )
  22.                )
  23.            )
  24.        )
  25.    )
  26.    (alert "Plot stamps are not loaded, please use the load blocks button.")
  27.    (princ)
  28.    (command "layer" "s" CL "")
  29. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 17:16:48 | 显示全部楼层
除其他问题外,在第二个progn表达式周围还有一组额外的括号-
 
乍一看,这:
  1. (if (tblsearch "BLOCK" (cdr vb))
  2.    (
  3.        (progn
  4.            (setq TAB (getvar "CTAB"))
  5.            (foreach LL (layoutlist)
  6.                (setvar "ctab" LL)
  7.                (command "layer" "set" "QF-ANNO-NOTE" "" "_.INSERT" (cdr VB) "0,0" "1" "1" "0")
  8.                (command "mview" "lock" "on" "all" "" (setvar "CTAB" TAB)
  9.                )
  10.            )
  11.        )
  12.    )
  13. )
可能应该是:
  1. (if (tblsearch "BLOCK" (cdr vb))
  2.    (progn
  3.        (setq TAB (getvar "CTAB"))
  4.        (foreach LL (layoutlist)
  5.            (setvar "ctab" LL)
  6.            (command "layer" "set" "QF-ANNO-NOTE" "" "_.INSERT" (cdr VB) "0,0" "1" "1" "0")
  7.            (command "mview" "lock" "on" "all" "")
  8.        )
  9.        (setvar "CTAB" TAB)
  10.    )
  11. )
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:18:23 | 显示全部楼层
这是一个检查括号lisp方便地找到不平衡点,如李指出。Like Lee(命令“mview”“lock”“on”“all”“(setvar“CTAB”选项卡))
 
  1. (defun c:chkbrk (/ opf bkt chekdfile rdctl wkfile currentln wln ltr ncln)
  2. (setvar "cmdecho" 0)
  3. (prompt "\nlook at end of line")
  4. ;(setq chekdfile (getstring "enter name of file :"))
  5. (SETQ chekdfile (getfiled "Enter file name:" " " "LSP" 4))
  6. (setq opf (open chekdfile "r"))
  7. (setq bkt 0)
  8. (setq blkl 0)
  9. (setq rdctl 1)
  10. (setq wkfile (open "c:\temp\wow.lsp" "w"))
  11. (setq currentln "a")
  12. (while (/= blkl 6)
  13. (setq currentln (read-line opf))
  14. (if (= currentln nil)(setq currentln ""))
  15. (if (= currentln "")(setq blkl (+ 1 blkl))(setq blkl 1))
  16. (setq wln currentln)                                                        
  17. (while (/= wln "")
  18.        (setq ltr (substr wln 1 1))
  19.        (setq wln (substr wln 2))
  20.        (cond ((= (ascii ltr) 34) (if (= rdctl 0)(setq rdctl 1)(setq rdctl 0)))
  21.                ((and (= ltr "(")(= rdctl 1))(setq bkt (+ bkt 1)))
  22.                ((and (= ltr ")")(= rdctl 1))(setq bkt (- bkt 1)))
  23.                ((and (= ltr ";")(= rdctl 1))(setq wln ""))
  24.                ;(t (prompt ltr))
  25.        )
  26. )
  27. (setq ncln (strcat currentln ";" (itoa bkt)
  28. (princ (itoa bkt))
  29. (if (= rdctl 0) "string open" "")))
  30. (if (/= currentln "")(write-line ncln wkfile))
  31. )
  32. (close wkfile)
  33. (close opf)
  34. (prompt (strcat "open brakets= " (itoa bkt) "."))
  35. )
  36. (setq ang1 nil
  37.      pt1 nil
  38.      pt2 nil
  39.      pt3 nil
  40.      pt4 nil
  41.      pt5 nil)
  42. (command "chkbrk")
  43. (princ)
回复

使用道具 举报

9

主题

55

帖子

47

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-5 17:55:24 | 显示全部楼层
不确定我到底做了什么,但我成功了。
 
  1. (defun c:PSTAMPA ( / cl vb ll)
  2.    (setq
  3.        CL (getvar 'clayer)
  4.        vb
  5.        (assoc  
  6.            (progn
  7.                (initget "Preliminary NFC")
  8.                (getkword "Enter Orientation [Preliminary/Nfc]:")
  9.            )
  10.            '(("Preliminary" . "NOTE_PRELIM") ("NFC" . "NOTE_NFC"))
  11.        )
  12.    )
  13.    (if (tblsearch "BLOCK" (cdr vb))
  14.        (
  15.            (progn
  16.                (setq TAB (getvar "CTAB"))
  17.                (foreach LL (layoutlist)
  18.                    (setvar "ctab" LL)
  19.                    (command "layer" "set" "QF-ANNO-NOTE" "" "_.INSERT" (cdr VB) "0,0" "1" "1" "0")
  20.                    (command "mview" "lock" "on" "all" "" (setvar "CTAB" TAB))
  21.                )
  22.            )
  23.        )
  24.        (alert "Plot stamps are not loaded, please use the load blocks button.")
  25.    )
  26.    (command "layer" "s" CL "")
  27. (princ))
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 13:11 , Processed in 0.511533 second(s), 60 queries .

© 2020-2025 乐筑天下

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