gpt4 book ai didi

Autolisp 用户函数重载

转载 作者:行者123 更新时间:2023-12-01 11:19:25 31 4
gpt4 key购买 nike

您可以在 AutoCAD 知识网站上阅读此内容:
"注意:您可以定义多个具有相同名称的用户函数,但每个定义接受不同数量或类型的参数。"
有人用过这个功能吗?我试过了,但根本不起作用。我只能调用最新定义的函数。如果我这样调用 (file::AppendFile arg1) 然后 autocad 说我给出的参数太少
enter image description here

最佳答案

我不在安装了 AutoCAD 的计算机旁,所以我无法检查 AutoLISP 是否按照文档所述的方式工作,但我确实知道我已经看到了将可变数量的参数传递到功能。

诀窍是将所有参数作为单个列表传递,然后在函数主体中处理该列表。例如:

(defun myFunction (argsList / path header)
(setq path (car argsList))
(setq header (cadr argsList))
(someFunction path "a" header)
)

...然后您将使用 (myFunction '("arg1")) 或使用 (myFunction '("arg1""arg2")).

请注意,在我上面的示例中,我使用了列表构造函数文字,因此它将传入实际字符串 "arg1""arg2"。如果你想传递变量的内容,你需要使用 (myFunction (list var1 var2)) 的形式,因为 (myfunction '(var1 var2)) 将传递符号 'var1'var2 而不是它们的值。

有点难看,但这是一个选择。

关于Autolisp 用户函数重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45751766/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com