首页 > 综合

cad二次开发lisp菜鸟教程(CAD二次开发之Lisp入门教程)

什么是Lisp

Lisp全称为“LISt Processing”(列表处理),是一种函数式编程语言,由约翰·麦卡锡(John McCarthy)在1958年提出,是最早的程序语言之一。Lisp的特色是采用S表达式表示代码和数据,将代码和数据融为一体,使得程序可以自我修改和扩展,具有自然、精美的语法,非常适合于处理符号运算、人工智能等领域。

为什么要学Lisp

在CAD二次开发中,Lisp可以构建各种自动化工具、加速设计流程,自定义各种常用工具、命令,并且Lisp是AutoCAD的脚本语言,有较佳的兼容性、执行效率高等优点。Lisp是学习编程的好语言,有利于提高编程能力和逻辑思维能力。在Lisp中,程序就像一种数据结构,方便对数据进行*作和处理。

Lisp的基础语法

Lisp语言中,以表达式(expression)为基本单位,由原子(atom)和列表(list)两种类型构成。原子类型包括整数、实数、字符串等,列表类型以括号“()”表示,以空格分割其中的元素。Lisp语言也支持函数,以“()”括起来的表达式即为函数调用。例如:

“`(cons 1 ‘(2 3)) ;返回(1 2 3)(+ 1 2) ;返回3(car ‘(1 2 3)) ;返回1(cdr ‘(1 2 3)) ;返回(2 3)(defun hello-world () (princ \”Hello, world!\”))(hello-world) ;控制台输出“Hello, world!”“`

实例演示之自定义命令

在AutoCAD中,可以通过Lisp代码自定义各种命令和工具,将其封装成.dcl和.mnl等文件直接加载到程序中使用。例如:

“`(defun c:test ( / ) (command \”line\” (getpoint \”\Start point:\”) (getpoint \”\End point:\”)) (prompt \”\Line created.\”))“`

以上代码定义了一个名为“test”的命令,命令执行划线*作。其中,(getpoint)可以获取鼠标选择的点坐标,(command)调用AutoCAD内置命令,(prompt)输出提示信息。

实例演示之提取属性信息

在AutoCAD中,设计对象的属性信息可以通过Lisp代码获取,包括颜色、线宽、坐标等。例如:

“`(defun c:test ( / sel obj w h ) (setq sel (ssget)) (repeat (setq obj (ssname sel 0))) (setq w (cdr (assoc 10 (entget obj)))) (setq h (cdr (assoc 11 (entget obj)))) (prompt (strcat \”\Width: \” (rtos w)) (strcat \”\Height: \” (rtos h))))“`

以上代码定义了一个名为“test”的命令,命令执行选择对象,提取对象的宽度和高度信息,输出到控制台中。其中,(assoc)函数用于从实体数据中查找指定属性代码的值。

Lisp常用函数和技巧

Lisp语言中有很多常用函数,例如car、cdr、cons、list、last、butlast、append、reverse、member、assoc等。Lisp的函数名是区分大小写的,如果没有参数,函数名后面不需要加括号。另外,Lisp支持变量赋值,以“setq”或“setf”关键字进行赋值。例如:

“`(setq a 1)(setf (cdr ‘(1 2 3)) ‘(4 5 6))“`

上述代码中,(setq)函数将变量a赋值为1,(setf)函数将(1 2 3)中的cdr值(即(2 3))修改为(4 5 6)。

结语

本文简要介绍了Lisp语言的基础语法和应用场景,希望本文能够帮助读者开启Lisp编程之路。Lisp作为一种历史悠久的编程语言,在自然语言处理、人工智能等领域有广泛的应用。在AutoCAD二次研发领域,Lisp也是不可或缺的工具之一。有扎实的Lisp编程基础,可以更好地开发CAD自动化工具,提高工作效率。

本文链接:http://xindalouti.com/a/33110227.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。