在逗号外调用函数
你好我试图创建一段代码,其中包含一个messagebox,用于询问一个问题(是/否),该问题反过来应该设置一个可以在“main”命令中使用的值。
(Defun FUNCTION (reply)
(SETQ reply (ACET-UI-MESSAGE "Content of questionbox" "Title of questionbox"
(+ Acet:YESNO Acet:ICONQuestion)
)
)
)
就我的“功能”知识而言,这通常是在命令中定义的。即。:
(Defun c:command ()
(defun FUNCTION ( / a)
(do something)
)
(FUNCTION (and do something with that function))
)
但我有点想在以类似方式工作的多个命令中使用该函数,但不想在每个命令中添加代码行。
那么,我如何做以下工作?
(Defun FUNCTION (reply)
(SETQ reply (ACET-UI-MESSAGE "Content of questionbox" "Title of questionbox"
(+ Acet:YESNO Acet:ICONQuestion)
)
)
)
(Defun c:CallFunction1 ()
FUNCTION
)
(Defun c:CallFunction2 ()
FUNCTION
)
(Defun c:CallFunction3 ()
FUNCTION
)
应该看起来像这样。
这三个命令现在都打开了“是/否”对话框。。。
因此,在这种情况下,这三个命令没有变量。
(defun FUNCTION ( / )
(setq reply (ACET-UI-MESSAGE "Choose dude " "Russells Dialog" (+ Acet:YESNO Acet:ICONQuestion)))
;; Yes = 6, No = 7
(if (= reply 6)
(progn
(ALERT "Yep")
)
(progn
(ALERT "Nope")
)
)
)
(defun C:CallFunction1 ( / )
(FUNCTION)
(princ)
)
(defun C:CallFunction2 ( / )
(FUNCTION)
(princ)
)
(defun C:CallFunction3 ( / )
(FUNCTION)
(princ)
)
(princ)
要对每个命令执行不同的操作,可以如下所示:
(defun TESTCOMMAND ( number / )
(setq reply (ACET-UI-MESSAGE "Choose dude " "Russells Dialog" (+ Acet:YESNO Acet:ICONQuestion)))
;; Yes = 6, No = 7
(if (= reply 6)
(progn
(cond
((= number 1)
(princ "Voorwaarden voor CallFunction1")
)
((= number 2)
(princ "Voorwaarden voor CallFunction2")
)
((= number 3)
(princ "Voorwaarden voor CallFunction3")
)
)
)
(progn
(princ "NO, annuleren.")
)
)
)
(defun C:CallFunction1 ( / )
(TESTCOMMAND 1)
(princ)
)
(defun C:CallFunction2 ( / )
(TESTCOMMAND 2)
(princ)
)
(defun C:CallFunction3 ( / )
(TESTCOMMAND 3)
(princ)
)
(princ)
(测试和工作) 在这两种情况下都会出现错误,我找不到修复它们的方法。似乎在命令部分出错了 这是我测试过的代码,效果很好。
(defun TESTCOMMAND ( number / )
(setq reply (ACET-UI-MESSAGE "Choose dude " "Russells Dialog" (+ Acet:YESNO Acet:ICONQuestion)))
;; Yes = 6, No = 7
(if (= reply 6)
(progn
(cond
((= number 1)
(princ "Voorwaarden voor CallFunction1")
)
((= number 2)
(princ "Voorwaarden voor CallFunction2")
)
((= number 3)
(princ "Voorwaarden voor CallFunction3")
)
)
)
(progn
(princ "NO, annuleren.")
)
)
)
(defun C:CallFunction1 ( / )
(TESTCOMMAND 1)
(princ)
)
(defun C:CallFunction2 ( / )
(TESTCOMMAND 2)
(princ)
)
(defun C:CallFunction3 ( / )
(TESTCOMMAND 3)
(princ)
)
(princ)
在我看来,您应该努力实现具有以下签名的“YesNo”功能:
(YesNoDialog“Title”“message”)=>T/nil(返回值T或nil) 现在似乎很好,真的。。。可能文字功能是问题所在。
页:
[1]