我做了一个LSP,它工作得很好,要求用户做出选择,这是一件经典的事情。
正在工作
- (initget "American Canadianmetric")
- (setq GRADE (getkword "\nGRADE:[American/Canadianmetric]: "))
- (cond
- ((= GRADE "American")
- (setq *LASTGRADE* "American")
- )
- ((= GRADE "Canadianmetric")
- (setq *LASTGRADE* "Canadianmetric")
- )
- ); cond
*LASTGRADE*(全局变量)如下所示,是我的变量,用于动态提供最后一个年级的输入作为默认答案(如果还不存在,则为美式)。除此之外,不能再点击选择(这正常吗?),这似乎有效,但如果我点击“回车”(而不是写“A”“American”等),它将分数定义为零(并返回零)
这是错误代码
- (defun c:gg ()
- (setq OLDCMD (getvar "cmdecho"))
- (setq OLDLAY (getvar "clayer"))
- (setq OLDATTREQ (getvar "attreq"))
- (setvar "cmdecho" 0)
- ;;;; SET INEXISTING COUNTERS TO 1
- (if (not *PCOUNT*) (setq *PCOUNT* 1))
- (if (not *WCOUNT*) (setq *WCOUNT* 1))
- (if (not *ICOUNT*) (setq *ICOUNT* 1))
- (if (not *CCOUNT*) (setq *CCOUNT* 1))
- ; initialize variables
- (setq ITEM_TYPE ""
- GRADE ""
- NUMB ""
- ITEM_ATT ""
- DESC_ATT ""
- MAT_ATT ""
- QTY_ATT ""
- ); setq
- ;; query # 1 - GRADE
- (if (not *LASTGRADE*) (setq *LASTGRADE* "American"))
- (initget "American Canadianmetric")
- (setq GRADE (getkword (strcat "\nChoose grade:[American/Canadianmetric]:< " *LASTGRADE* " >:")))
- (cond
- ((= GRADE "American")
- (setq *LASTGRADE* "American")
- )
- ((= GRADE "Canadianmetric")
- (setq *LASTGRADE* "Canadianmetric")
- )
- ); cond
- );defun
有人能看到并指出我的(可能是明显的)缺陷是什么吗?
干杯
杰夫! |