删除命令Nil和命令
这段代码工作得很好,但每次发出时,我都会收到一条错误消息。我知道这很简单,但我想不出来。缺少什么?非常感谢。(defun c:PSTAMPA ( / cl vb ll)
(setq
CL (getvar 'clayer)
vb
(assoc
(progn
(initget "Preliminary NFC")
(getkword "Enter Orientation :")
)
'(("Preliminary" . "NOTE_PRELIM") ("NFC" . "NOTE_NFC"))
)
)
(if (tblsearch "BLOCK" (cdr vb))
(
(progn
(setq TAB (getvar "CTAB"))
(foreach LL (layoutlist)
(setvar "ctab" LL)
(command "layer" "set" "QF-ANNO-NOTE" "" "_.INSERT" (cdr VB) "0,0" "1" "1" "0")
(command "mview" "lock" "on" "all" "" (setvar "CTAB" TAB)
)
)
)
)
)
(alert "Plot stamps are not loaded, please use the load blocks button.")
(princ)
(command "layer" "s" CL "")
)
除其他问题外,在第二个progn表达式周围还有一组额外的括号-
乍一看,这:
(if (tblsearch "BLOCK" (cdr vb))
(
(progn
(setq TAB (getvar "CTAB"))
(foreach LL (layoutlist)
(setvar "ctab" LL)
(command "layer" "set" "QF-ANNO-NOTE" "" "_.INSERT" (cdr VB) "0,0" "1" "1" "0")
(command "mview" "lock" "on" "all" "" (setvar "CTAB" TAB)
)
)
)
)
)可能应该是:
(if (tblsearch "BLOCK" (cdr vb))
(progn
(setq TAB (getvar "CTAB"))
(foreach LL (layoutlist)
(setvar "ctab" LL)
(command "layer" "set" "QF-ANNO-NOTE" "" "_.INSERT" (cdr VB) "0,0" "1" "1" "0")
(command "mview" "lock" "on" "all" "")
)
(setvar "CTAB" TAB)
)
) 这是一个检查括号lisp方便地找到不平衡点,如李指出。Like Lee(命令“mview”“lock”“on”“all”“(setvar“CTAB”选项卡))
(defun c:chkbrk (/ opf bkt chekdfile rdctl wkfile currentln wln ltr ncln)
(setvar "cmdecho" 0)
(prompt "\nlook at end of line")
;(setq chekdfile (getstring "enter name of file :"))
(SETQ chekdfile (getfiled "Enter file name:" " " "LSP" 4))
(setq opf (open chekdfile "r"))
(setq bkt 0)
(setq blkl 0)
(setq rdctl 1)
(setq wkfile (open "c:\temp\wow.lsp" "w"))
(setq currentln "a")
(while (/= blkl 6)
(setq currentln (read-line opf))
(if (= currentln nil)(setq currentln ""))
(if (= currentln "")(setq blkl (+ 1 blkl))(setq blkl 1))
(setq wln currentln)
(while (/= wln "")
(setq ltr (substr wln 1 1))
(setq wln (substr wln 2))
(cond ((= (ascii ltr) 34) (if (= rdctl 0)(setq rdctl 1)(setq rdctl 0)))
((and (= ltr "(")(= rdctl 1))(setq bkt (+ bkt 1)))
((and (= ltr ")")(= rdctl 1))(setq bkt (- bkt 1)))
((and (= ltr ";")(= rdctl 1))(setq wln ""))
;(t (prompt ltr))
)
)
(setq ncln (strcat currentln ";" (itoa bkt)
(princ (itoa bkt))
(if (= rdctl 0) "string open" "")))
(if (/= currentln "")(write-line ncln wkfile))
)
(close wkfile)
(close opf)
(prompt (strcat "open brakets= " (itoa bkt) "."))
)
(setq ang1 nil
pt1 nil
pt2 nil
pt3 nil
pt4 nil
pt5 nil)
(command "chkbrk")
(princ)
不确定我到底做了什么,但我成功了。
(defun c:PSTAMPA ( / cl vb ll)
(setq
CL (getvar 'clayer)
vb
(assoc
(progn
(initget "Preliminary NFC")
(getkword "Enter Orientation :")
)
'(("Preliminary" . "NOTE_PRELIM") ("NFC" . "NOTE_NFC"))
)
)
(if (tblsearch "BLOCK" (cdr vb))
(
(progn
(setq TAB (getvar "CTAB"))
(foreach LL (layoutlist)
(setvar "ctab" LL)
(command "layer" "set" "QF-ANNO-NOTE" "" "_.INSERT" (cdr VB) "0,0" "1" "1" "0")
(command "mview" "lock" "on" "all" "" (setvar "CTAB" TAB))
)
)
)
(alert "Plot stamps are not loaded, please use the load blocks button.")
)
(command "layer" "s" CL "")
(princ))
页:
[1]