用Lisp将多步骤CAD命令改为单步骤命令

用Lisp制作简单的CAD命令,将多步骤CAD命令改为单步骤命令,主要使用到两个函数:command (或者vl-cmdf)及defun函数。此为Autolisp入门函数。

个人感想:同一种功能有多种方式算法可以实现,比如可以用Lisp,Vlisp(vla),VBA;一般常用功能用Lisp中的command调用CAD内置命令即可实现,而且多数时候代码更简单简洁,执行效率更高。例如修改图形对象属性中的图层,颜色,线型等等,Vlisp与VBA需要用到循环,对每个对象的属性进行逐一修改,而用内置命令可以对全部对象属性直接修改。总的来说,在没有特别性能需求的情况下,怎么简单怎写。掌握简单基础的多步命令改单步命令,可以快速入门lisp,提高制图效率。

结尾附个人常用CAD命令集及相关源代码,方便使用交流学习。


一,函数介绍

command 函数语法

     (command [arguments]...)

功能及参数

    此函数可使 AutoLISP 能在 AutoCAD 中执行命令, 然后传回 nil。arguments 是AutoCAD 的命令或副命令。每一个参数在经过分析之后, 将被送至 AutoCAD 系统中来响应其提示语句。命令的名称是以字符串来表示的, 2D点是一个含有两个实型数的表, 3D 点则是一个含有三个实型数的表。


defun 函数语法

     (defun sym argument-list expr...)

功能及参数

     defun 是以名称 sym 来定义函数, 此名称函数会自动加上引号, 所以您不需自行加上引号。函数名称之后是一个参数表函数, 此 argument-list 内的参数可有可无。在参数后, 可以使用一个“/”符号和一个或一个以上的 sym 区域性符号。区域性符号和参数的间隔必须以“/”符号来分隔。同时, 要隔一个空格。如果没有给出参数或区域性符号, 那么必须在函数名称的后面加上一空白的括号。


二,代码示例

打开记事本,输入代码;将文件另存为my.lsp,保存类型选全部,编码类型默认UTF-8或者ANSI,代码为;或者在CAD中输入Vlisp,进入Lisp编程界面,新建文件,输入代码,保存.lsp。

常用修改对象命令有:"chang","chprop","-layer","-color","-linetype"等等。

;;;输入命令XH,创建横向构造线--------------------------------------(defun c:XH ()  (command "xline" "h" ) ;用command命令将两个命令一起执行(princ))
;;;输入命令XV,创建竖向洋红色构造线---------------------------------(defun c:XV ()  (command "-color" "6") ;设置当前绘图颜色为洋红色  (command "xline"  "v" )   (while (/= (getvar "cmdactive") 0) ;用于连接空格后的命令   (command pause))  (command "-color" "bylayer");恢复当前绘图颜色为随层(princ))  ;;;绘制尺寸标注参考线(任意角度,适用于A4图框比例)--------------------(defun c:xar ()  (command "-color" "6")  (setq ds (getvar "dimscale"))  (setq ds1 (* ds 6))   (setq ds2 (* ds 5))   (setq pt1 (getpoint "\n选择直线对象的偏移点"))  (setq pt2 (getpoint "\n指定向哪侧偏移"))  (command "xline" "o" ds1 pt1 pt2 "")   (repeat 9     (setq las (entlast))    (cond       ((and (<= (car pt1) (car pt2)) (<= (cadr pt1) (cadr pt2)))      (setq pt2 (list (+ (car pt2) ds1)                    (+ (cadr pt2) ds1)                    (caddr pt2))))      ((and (<= (car pt1) (car pt2)) (>= (cadr pt1) (cadr pt2)))      (setq pt2 (list (+ (car pt2) ds1)                    (- (cadr pt2) ds1)                    (caddr pt2))))      ((and (>= (car pt1) (car pt2)) (<= (cadr pt1) (cadr pt2)))      (setq pt2 (list (- (car pt2) ds1)                    (+ (cadr pt2) ds1)                    (caddr pt2))))      ((and (>= (car pt1) (car pt2)) (>= (cadr pt1) (cadr pt2)))      (setq pt2 (list (- (car pt2) ds1)                    (- (cadr pt2) ds1)                    (caddr pt2)))))    (command "xline" "o" ds2 las pt2 ""))  (command "-color" "bylayer")(princ))  ;;;输入命令BY,设置颜色随层--------------------------------------(defun c:by ()  (command "-color" "bylayer")  (princ "Set Color By Layer")(princ))  ;;;输入命令BF,选择对象,打断于点--------------------------------(defun c:BF ()  (command "break" pause "f" pause "@")(princ))
;;;-------------------------------------------------------------;;;输入命令VF,将视图改为前视图;(改为俯视图,左视图,参照程序修改即可)(defun C:VF ()   (command "-view" "front")   (princ "前视") (princ))  ;;;-------------------------------------------------------------;;;输入命令1,将对象颜色设为红色(1);其他颜色0~255,参照程序修改数字即可;;;仅修改选中对象的颜色,不改变图层和线型。(defun c:1 ()  (setq ss (ssget))  (if ss (command "chprop" ss "" "c" 1 ""))(princ))  ;;;-------------------------------------------------------------;;;输入命令LL,选择对象,将对象所在图层设置成当前图层(模型及布局空间均可用);;;或者在gpg文件中末尾添加命令 LL, *ai_molc (模型可用,布局不可用)(defun c:LL ()  (setq ent (car (entsel)))  (if ent    (progn      (setq lay (cdr (assoc 8 (entget ent))))      (command "-layer" "s" lay ""))     )     (princ "\n未选择图元!")   )(princ))  ;;;-------------------------------------------------------------;;;输入命令KK,选择对象,把对象从其他图层改到当前图层(defun c:kk ()  (setq layername (getvar "CLAYER"))  (setq ss (ssget))  (if ss    (command "chprop" ss "" "la" layername "")    (princ "\n未选择图元!")  )(princ))


三,使用方法

在CAD命令行中输入AP,回车键后选择Lisp文件,加载成功,即可使用Lisp  定义的命令。如果经常使用,可以加入启动组。


四,常用的 Lisp 命令集 

以下是本人35个简单的常用自定义命令集,AP加载后即可使用,文件程序见结尾。

如以下命令与自身常用命令冲突,可自行修改命令(即修改 “defun c:” 后的命令)。.lsp为源程序(PS:可自由删改,按需使用),.vlx为编译后的程序,编译后的程序运行效率更高些,二者加载其中一个即可。

(PS: 线型命令如发现比例不协调,问题出在这几个线型在图纸中已经有了,并且这几个线型的被图纸修改了,基本解决方法是命令 “LT” 重载这几个线型,并 命令 “RE” 重生成;另一个解决方法是,使用命令 "JJXX",重载线型。)

如果lisp每次加载都弹出对话框,可将lisp文件(即.lsp或.vlx),加入启动组。并将lisp所在文件夹,在选项设置中(命令“OP”打开)加入 文件--受信任位置;


结尾

以下为Lisp程序文件下载链接获取方式:

公众号:为赶路人干杯

公众号回复:Lisp

(后续如有制作Lisp 命令都会放在共享这个文件夹中)

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值