CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoLISP 开发指南

关于带参数的函数(AutoLISP)

2023-1-6 13:03| 发布者: admin| 查看: 965| 评论: 0|来自: AutoCAD

摘要: 使用 AutoLISP,许多函数都要求您向它们传递值。这些值称为参数。

使用 AutoLISP,许多函数都要求您向它们传递值。这些值称为参数。

有些函数也不接受参数,有些函数接受可选参数。用户定义的函数不能有可选参数。调用接受参数的用户定义函数时,必须为所有参数提供值。

注意:您可以定义多个具有相同名称的用户函数,但让每个定义接受不同数量或类型的参数。

用作参数的符号在参数列表中局部变量之前定义。参数被视为特殊类型的局部变量;参数变量在函数外部不可用。不能定义具有多个同名参数的函数。

如果对多个参数使用相同的名称,则在 AutoCAD 命令提示符下将显示以下错误消息:

重复的参数名称:

下面的代码定义一个接受两个参数的函数。代码要求参数都是字符串数据类型。参数将合并并作为结果字符串返回。

(defun ARGTEST ( arg1 arg2 / ccc )
  (setq ccc "Constant string")
  (strcat ccc ", " arg1 ", " arg2)
)
ARGTEST

该函数返回所需的值,因为 AutoLISP 始终返回它计算的最后一个表达式的结果。最后一行用于连接字符串,并返回结果值。这是不应使用 thefunction 来抑制程序返回值的一个示例。ARGTESTARGTESTstrcatprinc

这种类型的函数可以在应用程序中多次使用,以按特定顺序将两个变量字符串与一个常量字符串组合在一起。由于它返回一个值,因此可以将该值保存到变量中,以便稍后在应用程序中使用。

(setq newstr (ARGTEST "String 1" "String 2"))
"Constant string, String 1, String 2"

变量现在设置为三个字符串组合的值。newstr

请注意,变量是在函数中本地定义的。函数运行完成后,AutoLISP 将重新捕获分配给变量的内存。可以使用以下代码检查分配给的值。ccc ARGTESTccc

!ccc
nil

如果字符串值未传递给函数,则该函数将返回以下错误:ARGTESTstrcat

;错误:错误的参数类型:字符串 1

可以使用 type 函数来验证参数的数据类型并做出适当的响应。该函数还有助于捕获函数返回的错误。下面的示例代码使用 thefunction 来确保在尝试组合并返回结果字符串之前,该函数已传递两个字符串值。vl-catch-apply-allstrcattypeARGTEST

(defun ARGTEST (arg1 arg2 / ccc retVal)
  (setq ccc "Constant string")

  (if (= (type arg1) 'STR)
    (if (= (type arg2) 'STR)
      (setq retVal (strcat ccc ", " arg1 ", " arg2))
      (prompt "bad argument: arg2 not a string\n")
    )
    (prompt "bad argument: arg1 not a string\n")
  )
  (if retVal
    retVal
    (princ)
  )
)

路过

雷人

握手

鲜花

鸡蛋

最新评论

python编程Autocad从入门到精通

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 )

GMT+8, 2024-5-6 19:25

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部