教程:创建新的自定义命令并使用系统变量进行控制 (AutoLISP)
使用 AutoLISP 编程语言,您可以通过创建自己的类似命令的函数和设置系统变量的值来控制绘图环境。 使用 AutoLISP,您可以创建可从命令提示符访问的新命令,就像与标准 AutoCAD 命令或第三方实用程序定义的命令进行交互一样。自定义命令可以将标准 AutoCAD 命令与函数一起使用,也可以使用 AutoLISP 函数直接操作对象。许多开发人员创建 AutoLISP 函数,这些函数按特定顺序执行多个标准 AutoCAD 命令。command AutoLISP 程序还可以查询和更改系统变量的值。系统变量会影响命令和 AutoCAD 环境的行为。 创建新函数您可以使用 AutoLISP 函数定义一个新函数。 表示“定义功能”。defundefun 以下是该函数的签名:defun (defun function_name ([arguments] [/ local_variables ...]) expr ...) 如您所见,第一个参数是要定义的函数的名称。 该函数还允许您定义可传递给函数的参数列表以及“本地”到函数的用户定义变量列表。当您声明仅在函数处于活动状态时才可用的用户定义变量时,请确保将它们作为表达式的一部分添加到局部变量列表中。defundefun 以下是将消息输出到命令提示符或消息框中的自定义函数的示例: (defun display-msg (msg mode / ) (if (= mode 0) (prompt (strcat "\n" msg)) (alert msg) ) (princ) ) 自定义 display-msg 函数需要两个值,一个是文本字符串的消息,一个是 0 或 1 的整数值。您可以通过在 AutoCAD 命令提示符下输入代码,然后输入以下选项之一来执行函数来测试该函数:
创建自定义命令自定义命令是与该函数一起定义的函数,但使用特殊的命名约定:它们使用字符作为前缀。这使它们与其他功能区分开来。defunc: 您可以定义一个接受参数的函数,但绝不应定义一个将用作接受参数的自定义命令的函数。相反,定义为自定义命令的函数应提示用户输入 、 、 和 函数。getXXXentselnentselssget 为函数提供函数名称后,可以输入在命令提示符下输入自定义命令时应执行的 AutoLISP 表达式。defun 以下步骤说明如何定义名为 HELLO 的自定义命令。此命令将提示用户输入字符串值,然后显示在消息框中输入的字符串:
现在,HELLO 命令已经定义,您可以通过在命令提示符下输入其名称来执行它。使用以下步骤执行 HELLO 命令:
直接在命令提示符下输入表达式可以很容易地学习和使用 AutoLISP,但这种便利性有一个缺点。在图形中定义的任何函数和用户定义变量都只能从该图形访问,直到该图形关闭。您可以通过执行以下操作来查看此内容:
您可以将 AutoLISP 表达式保存到文件扩展名为 LSP 的文件中,以便可以重复使用它们并将其加载到其他图形中。有关创建和装入 AutoLISP 源 (LSP) 文件的信息,请参见教程:创建、装入和打开 AutoLISP 文件。 访问和设置系统变量值系统变量控制命令的行为,更改绘图环境的设置,并指定新对象的默认属性值等等。您可以使用以下函数查询和设置系统变量的值:
下面介绍如何获取和设置 OSMODE(对象捕捉模式)系统变量的值:
注意:在对绘图环境进行更改之前,最好存储任何系统变量的值,然后在程序结束之前还原它们。
|
|Archiver|CAD开发者社区
( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2025-3-14 08:47
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.