文章来源:教程:入门 (AutoLISP) - 基础教程 - CADN - 中文CAD开发文档,CAD二次开发问题交流,优秀插件分享
使用 AutoLISP 编程语言创建自定义例程是自动化 AutoCAD 并将其扩展到您想要的工作方式的绝佳方法。
AutoLISP基于LISP(LISt Processing)编程语言。列表是用括号括起来的结构。列表中的元素可以是以下一项或多项:
- 编程操作、数学函数或列表操作等函数
- AutoCAD 命令或系统变量名称、文本字符串、整数或实数或坐标等值
- 另一个列表
通常,列表中的第一个元素是函数的名称,以下元素称为参数,它们提供函数将处理的值。
下面显示了用于 AutoLISP 表达式的语法:
<span style="color:#000000"><span style="background-color:#ffffff">(function_name <em id="GUID-C64046FA-CD9E-4B38-9967-A501119E4A62__GUID-3CD53218-86D1-41BD-B3F0-DBB44EC0F974">[argument1 argumentX …]</em>)</span></span>
AutoCAD 帮助系统包含可在 AutoLISP 程序中使用的可用功能的列表。每个函数主题都包含有关
- 如何使用函数,
- 函数期望的数据类型和参数数,
- 哪些参数是可选的
- 函数返回的数据类型。
大多数函数主题还包括示例代码,以帮助您开始使用该函数。
乍一看,AutoLISP 表达式在程序中使用的语法可能令人生畏,但只要稍加练习和时间,您就会习惯它。除了以 a(左括号)开头的 AutoLISP 表达式之外,表达式也可以以字符开头。(感叹号)字符只能在 AutoCAD 命令提示符下使用,并用于返回 AutoLISP 变量的当前值。(!!
以下是 AutoLISP 表达式的一些示例:
- (setq dRadius 1.25)
- !dRadius
- (command "circle" "0,0" dRadius)
嵌套表达式
随着 AutoLISP 程序复杂性的增加,您创建的表达式也会增加。AutoLISP 表达式可以嵌套在彼此内部。嵌套表达式时,始终从最内层的表达式到最外层的表达式计算它们。AutoLISP 表达式的求值过程类似于数学中的运算顺序。
以下是 AutoLISP 中嵌套数学表达式的示例:
<span style="color:#000000"><span style="background-color:#ffffff"><strong id="GUID-C64046FA-CD9E-4B38-9967-A501119E4A62__GUID-7D442F61-DF10-4D53-8B08-275E366A9897">(+ 0.01 (* 2 0.875))</strong></span></span>
在此示例中,首先计算最里面的表达式 (* 2 0.875)。这两个数字相乘,*(乘积或乘法)函数返回值 1.75。然后,AutoLISP 将外部表达式的计算结果为 (+0.01 1.75)。将两个数字相加后,AutoLISP 返回最终值 1.76。
以下是嵌套表达式的其他示例:
<span style="color:#000000"><span style="background-color:#ffffff"><strong id="GUID-C64046FA-CD9E-4B38-9967-A501119E4A62__GUID-2A2EA255-9D6B-4BC1-8C22-17D821A225C9">(setq nDist (getreal "\nEnter a distance: "))</strong></span></span>
该函数提示用户输入实际数值。然后将提供的值传递给函数并分配给用户定义的变量。getrealsetqnDist
<span style="color:#000000"><span style="background-color:#ffffff"><strong id="GUID-C64046FA-CD9E-4B38-9967-A501119E4A62__GUID-83394DB6-AFDF-47BA-99E6-457AEA1CBFD1">(alert (strcat "Welcome " "to " "AutoLISP!"))</strong></span></span>
该函数将所有字符串组合成一个字符串值。然后将函数返回的值传递给函数并显示在消息框中。strcatstrcatalert
在 AutoCAD 命令提示符下使用 AutoLISP 表达式
-
在命令提示符下,输入!dRadius。
AutoLISP 返回存储在用户定义变量中的值。如果变量尚未定义或没有值,则返回值 ofis。dRadiusnil
-
在命令提示符下,输入(setq dRadius 1.25)。
AutoLISP 创建一个名为的用户定义变量,并为其赋值 1.25。该函数返回值 1.25,这是分配给变量的值。dRadiussetq
-
在命令提示符下,输入!dRadius。
AutoLISP 返回存储在用户定义变量中的值,该值为 1.25。
-
在命令提示下,输入(命令“._circle”“0,0”dRadius)。
AutoLISP 启动 AutoCAD CIRCLE 命令,并向该命令传递两个值。值“0,0”用于定义圆中心点的位置,并用于指定圆的半径。由于值为 1.25,因此圆的半径设置为 1.25。dRadiusdRadius
-
在命令提示符下,输入 (setq pt (getpoint “\n指定圆的中心点: ”))。
AutoLISP 会提示您输入坐标值。可以使用键盘输入坐标值,也可以在绘图区域中单击。提供的坐标值将分配给变量。pt
-
在命令提示符下,输入(命令“._circle”pt dRadius)。
AutoLISP 启动 AutoCAD CIRCLE 命令,该命令使用分配给这两个变量的值。ptdRadius
文章来源:教程:入门 (AutoLISP) - 基础教程 - CADN - 中文CAD开发文档,CAD二次开发问题交流,优秀插件分享