Lee Mac 发表于 2022-7-6 13:01:58

你必须使用
 

(if (not...

 
因为我们正在检查空输入。

Lee Mac 发表于 2022-7-6 13:04:10

这里有一些关于逻辑和默认值的更多信息,有很多方法可以做这些事情,所以这篇文章并不完整。
 
首先,您需要记住,如果用户按enter键,getkword将返回nil,因此为了控制默认值,我们利用了这一事实。
 
有很多方法可以做到这一点,但这里有一些方法,我很快就组合起来了。
 
最简单的例子是,当您想要一个永远不会改变的“设置”默认值(如“是/否”,总是默认为“是”):
 

(initget "Yes No")
(if (not (setq ans (getkword "\nYes or No <Yes> : ")))
(setq ans "Yes"))


(initget "Yes No")
(setq ans (cond ((getkword "\nYes or No <Yes> : "))
               ("Yes")))


(initget "Yes No")
(or (setq ans (getkword "\nYes or No <Yes> : "))
   (setq ans "Yes"))

但我们可以更进一步,也许有一个默认值将更改为最后输入的值。
 
例如,检索非零正数时:
 
在这里,我们设置了一个初始默认值“*def*”(它将保持全局-即不本地化),并且,如果用户在提示符上输入一个新数字,我们会将该数字设置为默认值。变量*def*将被我们的程序用于任何目的。
 
因此,如果用户在提示符下点击enter键,*def*的值不会改变,我们的程序将使用默认值。
 
实现相同结果的其他方法:
 
11
对于那些没有看到以这种方式使用的函数“和”&“或”的人,为了帮助澄清它,考虑一下这些函数的评估方式。
 
使用or时,将对语句进行求值,直到语句的求值结果为true。此时评估停止。
 
使用and,将对语句进行求值,直到语句的求值结果为nil(false)。此时评估停止。
 
此外,请记住,true是任何非零的东西。
 
 
我希望这能帮助你理解,
 

AQucsaiJr 发表于 2022-7-6 13:08:10

这对李很有帮助,谢谢。。。我找不到任何关于正确使用(and)和(or)函数的信息。
 
(如果)声明总是必须被(非)声明搁置吗?我找不到任何不符合此订单的示例。

Lee Mac 发表于 2022-7-6 13:09:48

安德鲁,
 
查看Visual LISP编辑器帮助文件。它们包含在此阶段使用LISP函数时可能需要的所有信息。
 
其中一些是为VBA编写的,但可以很容易地适用于LISP-但在这个阶段,除非您决定冒险使用Visual LISP,否则应该没问题。

AQucsaiJr 发表于 2022-7-6 13:14:23

我有个问题。。。我把我所有的Lisp程序写在记事本上。。。在ACAD内的编辑器中编写它们会更好吗?

Lee Mac 发表于 2022-7-6 13:16:43

 
肯定
 
AutoCAD中的编辑器比记事本好100倍-语法高亮显示和帮助是必不可少的。
 
另一种方法是Notepad++或其他主流代码编辑器,如Vim,但它们在LISP帮助中没有提供那么多。

AQucsaiJr 发表于 2022-7-6 13:21:35

好的,谢谢李!

Lee Mac 发表于 2022-7-6 13:23:18

最重要的是,AutoCAD中的Visual LISP编辑器(VLIDE)具有调试和格式化选项,可以为您设置代码,还可以让您知道问题区域在哪里。
 
还有“自动文字完成”选项、变量监视/跟踪和加载等。
 
有关如何在此处使用它的更多信息:
 
http://www.afralisp.net/vl/vlisp.htm
 
http://www.afralisp.net/vl/vl-edit.htm
 
http://midpointcad.com/au/docs/lakose_The_Visual_LISP_Developers_Bible.pdf

AQucsaiJr 发表于 2022-7-6 13:27:52

圣经。。。我总是可以用那个。。。谢谢李。

Lee Mac 发表于 2022-7-6 13:31:02

 
没问题-你很快就会被转化
页: 1 [2]
查看完整版本: 修复我的Plot命令