AutoCAD软件提供了许多开放式接口,允许用户通过这些接口对AutoCAD进行二次开发,为AutoCAD增加新功能,以满足用户的工作需要。LISP语言程序就是常用的一种,在AutoCAD R14中,将编写的LISP程序(函数)加入到ACADr14.LSP 文件中,这些函数就如同AutoCAD的基本命令一样,非常方便。下面开发的几个LISP函数程序分别实现了绘制铁路线型、多义线节点的增加、删除操作等特殊编辑功能。
绘制铁路线型
1.程序设计思路
在AutoCAD的线型库文件ACAD.LIN、ACADISO.LIN分别新增实线段与空白段之比为1∶1、名为“Railway” 的线型,描述格式如下:
在ACAD.LIN中增加:
*Railway,Railway — —
A,1,-1
在ACADISO.LIN中增加:
*Railway,Railway — —
A,15,-15
通过对选定多义线设置线宽(铁路线宽),原点拷贝,将由拷贝生成的多义线设置为新建的“铁路”图层,颜色设为“白色”,线型设为“Railway”,线宽为原线宽的0.7倍,这样原多义线与叠加在其上的宽度稍窄的白色虚线就构成了形象逼真的铁路线。
2.程序代码
(defun c:tlx()
(setvar “cmdecho” 0)
(setq ss (ssget ‘((0 .“LWPOLYLINE”))))
(if (equal ss NIL)
(exit) ; 没有选择对象或已取消
)
(setq tlkd (getstring“请输入铁路线宽度:”))
(command “pedit” ss “width” tlkd “”)
(command “copy” ss “” “0,0” “0,0” “”)
(command “layer” “m” “铁路” “L” “Railway” “” “”)
(command “layer” “s” “铁路” “c” “255” “” “”)
(setq sset (ssget “L”))
(command “pedit” sset “width” (setq tlkd1 (* (atof tlkd) 0.7)) “L” “ON” “”)
(setq ename1 (ssname sset 0)
ent1 (entget ename1))
(setq ent11 (nth 5 ent1))
(setq ent11 (subst (cons 8 “铁路”) ent11 ent1))
(entmod ent11)
(setq ent12 (nth 6 ent11))
(setq ent12 (subst (cons 6 “Railway”) ent12 ent11))
(entmod ent12)
)