initget/cond/getkword例程
我创建了一个lisp,该lisp增加了在initget/cond/getkword例程中具有记忆变量(getenv“LISPS\\attfusenuminc”)的属性。这是可行的,但似乎并不正确。要求将“Specify”作为默认选项,但如果我没有选择“Resume”来重新开始编号,则需要选择“Specify”。有人知道更好的方法吗?
(defun c:test (/ option tmp)
(if (getenv "LISPS\\attfusenuminc")
(Setq tmp (getenv "LISPS\\attfusenuminc"))
(Setq tmp "1")
)
(initget (strcat "Specify Resume " tmp))
(setq option (cond ((getkword (strcat "\nFuse Start Number? : ")))
("Specify")))
(cond
((eq option "Specify")
(princ "\nSpecify Selected"))
((eq option "Resume")
(princ "\nResume Selected"))
)
(princ)
)
它不会在默认选项中添加“点”,尽管它默认为“指定”。
为了清晰起见,我只包含了lisp的相关部分,其余的属性增量lisp工作得很好。
嗨,霍比特人
我认为你可以简化你的Lisp程序。实际上,设置起始编号需要两个步骤。
请看一下这个代码。您可以将数字设置为新值,或按enter键继续。
(defun c:test (/ start_number tmp)
(or
(Setq tmp (getenv "LISPS\\attfusenuminc"))
(Setq tmp "1")
)
(initget 6)
(setq start_number
(cond
((getint (strcat "\nFuse Start Number <" tmp ">: ")))
(tmp)
)
)
;(setenv "LISPS\\attfusenuminc" start_number)
(princ start_number)
(princ)
) 我会回应Stefan的评论,但编写代码时会略有不同:
这样,保险丝编号变量将始终保持整数值。 谢谢你们两位花时间纠正我的错误。
我对cond语句的正确运行太过眼花缭乱,以至于没有考虑另一种方式,这与您的“使用默认选项提示”Lee没有什么不同。 实际上,有许多方法可以在AutoLISP中实现相同的结果
不客气!
页:
[1]