cyberrog 发表于 2022-7-6 09:21:54

错误:错误的参数类型-Sum

您好,我正在构建一个lisp,以根据用户给定的标准距离添加新文本。lisp是:
 
但是当它要求输入文本时,我键入了它,但出现了以下错误。
 
错误:参数类型错误
(+PP距离)
(SETQ X(+PP DIST))
 
我认为这是dist和pp的类型,因为一个是getint,另一个是getpoint。

Lee Mac 发表于 2022-7-6 09:32:01

作为一种快速修复方法,可能需要更改:
 
          (setq x (+ pp dist))

收件人:
 
          (setq x(+ x dist))
         (setq pp (cons x (cdr pp)))

cyberrog 发表于 2022-7-6 09:51:41

非常感谢。成功了!

Lee Mac 发表于 2022-7-6 09:56:44

我稍微修改了你的代码,添加了一些错误捕捉,但不会太多,因此你可以理解更改(代码仍然可以改进,以考虑UCS等)。
 
关于上述内容的几点注释:
 
 
[列表]
[*]当提示用户输入时,请检查输入是否为空,否则代码中期望此输入的其他部分可能会失败。如果用户未能提供输入,则所有getXXX(getstring除外)都将返回nil,因此您可以使用简单的if语句来检查此输入。
[/列表]
 
[列表]
[*]避免在LISP中使用“text”命令,此命令的提示可能因使用的文本样式而异,因此不可靠。相反,请考虑使用entmake创建文本,如上面的代码所示。此处可以找到所用DXF代码的参考。
[/列表]
 
[列表]
[*]始终本地化变量!为了理解这一点的重要性,请阅读本简短教程。
[/列表]

irneb 发表于 2022-7-6 10:03:59

这将始终使用标准文本样式并放置在层0上-无论当前是什么。 
我还建议对文本使用vla方法(或者在某些情况下修改高度)。。。由于文字样式可能是注释性的。或者,可以通过将1/CAnnoScaleValue与当前样式的图纸空间高度相乘来忽略/计算所需的文字高度。
 
这是一种既不在这里也不在那里的情况:vla在使用unicode字符时又出现了一些问题,所以没有完美的答案。下面是一个与当前样式/图层/annoscale一起使用的修改:
4

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

Irne,我不想压倒初学者。。。

irneb 发表于 2022-7-6 10:26:31

哎呀!对不起,那我就这么做
页: [1]
查看完整版本: 错误:错误的参数类型-Sum