Happy Hobbit 发表于 2022-7-5 17:58:41

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工作得很好。

Stefan BMR 发表于 2022-7-5 18:16:35

嗨,霍比特人
 
我认为你可以简化你的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)
)

Lee Mac 发表于 2022-7-5 18:30:29

我会回应Stefan的评论,但编写代码时会略有不同:
这样,保险丝编号变量将始终保持整数值。

Happy Hobbit 发表于 2022-7-5 18:44:55

谢谢你们两位花时间纠正我的错误。
我对cond语句的正确运行太过眼花缭乱,以至于没有考虑另一种方式,这与您的“使用默认选项提示”Lee没有什么不同。

Lee Mac 发表于 2022-7-5 19:08:46

实际上,有许多方法可以在AutoLISP中实现相同的结果
 
不客气!
页: [1]
查看完整版本: initget/cond/getkword例程