AutoCAD LISP 自动化开发入门:提升绘图效率的利器
3 min readCAD 二次开发
AutoCADLISP自动化二次开发CAD
什么是 AutoLISP
AutoLISP 是 AutoCAD 内置的编程语言,基于 LISP 语法,专为 CAD 自动化设计。它可以让你用几行代码完成重复性工作,比如批量修改图层属性、自动生成标注、快速创建常用图形等。
对于每天需要处理大量 CAD 图纸的工程师来说,掌握 AutoLISP 可以将效率提升数倍。
LISP 基础语法
AutoLISP 使用前缀表达式,所有运算符和函数名放在括号的最前面:
;; 基本运算
(+ 1 2) ; 返回 3
(* 5 10) ; 返回 50
;; 定义变量
(setq radius 100)
(setq pi_val 3.14159)
(setq circumference (* 2 pi_val radius))
;; 定义函数
(defun c:hello ()
(princ "\n你好,AutoCAD!")
(princ)
)
以 c: 开头的函数可以在 AutoCAD 命令行直接调用,输入 hello 即可执行。
实用示例:批量修改图层颜色
在实际工作中,经常需要统一修改图层属性。以下函数可以将指定图层的颜色批量修改:
(defun c:change-layer-color (/ layer-name new-color layer-obj)
(setq layer-name (getstring "\n请输入图层名称: "))
(setq new-color (getint "\n请输入新的颜色号 (1-255): "))
(if (tblsearch "LAYER" layer-name)
(progn
(setq layer-obj (tblobjname "LAYER" layer-name))
(setq layer-obj (entget layer-obj))
(setq layer-obj (subst (cons 62 new-color)
(assoc 62 layer-obj)
layer-obj))
(entmod layer-obj)
(princ (strcat "\n图层 " layer-name " 颜色已修改为 "
(itoa new-color)))
)
(princ (strcat "\n未找到图层: " layer-name))
)
(princ)
)
实用示例:自动绘制矩形标注框
为图纸添加统一的标注框是常见需求:
(defun c:title-block (/ pt width height)
(setq pt (getpoint "\n选择左下角点: "))
(setq width 420.0) ; A3 图幅宽度
(setq height 297.0) ; A3 图幅高度
(command "RECTANGLE" pt
(list (+ (car pt) width)
(+ (cadr pt) height)))
(princ "\nA3 标注框绘制完成。")
(princ)
)
如何加载和运行
- 将代码保存为
.lsp文件(如my-tools.lsp) - 在 AutoCAD 命令行输入
(load "my-tools.lsp") - 输入函数名即可运行(如
title-block)
如需每次启动 AutoCAD 时自动加载,可将 .lsp 文件路径添加到 acad.lsp 或通过 APPLOAD 命令设置启动组。
进阶方向
掌握 AutoLISP 基础后,可以继续探索 Visual LISP(提供 IDE 和调试工具)、DCL 对话框开发,以及 ActiveX/COM 接口实现更复杂的自动化场景。