2012年(第41卷)第3期 信 息 技 术
AutoL l SP语言在 OAD图纸批量打印中的应用
孙乾锋
(甘肃省交通规划勘察设计院有限责任公司,甘肃 兰州 730030)
摘 要:为提高 AutoCAD绘图人员大批量打印设计图纸的工作效率 ,本论述采用 AutoCAD软件提供的 AutoLISP二次开发
语言编写了批量打印程序。通过对 比常规打印命令与批量打印程序的使用效果可知,批量打印程序具有操作简便、自动化
程度高、输出图纸便捷等优点。为便于开发人员相互借鉴学习,笔者详细介绍了程序总体思路、结构及关键的实现途径等。
关键词 :AutoLISP语言;二次开发;批量打印
1概述
AutoCAD是美 国 AutoDesk公司于 1982年 12月
推出的一种计算机辅助设计软件,目前已风靡全球工
程界,在中国更是得到了普遍应用。对 CAD绘图者来
说,打印图纸是一项非常重要的日常工作。近年来,随
着工程建设规模的逐渐扩大,图纸的打印数量也在增
加。如公路 、铁路行业中,一个项目仅路线纵断面或横
断面设计图就将近上百张。若绘图者采用 CAD提供的
常规方式打印,既费人费力、又极易出错。为解决此问
,笔者采用 CAD提供的 AutoLISP语言编写了批量打
印程序。
2 AutoLISP语言
AutoCAD作为一种通用设计软件,已包含大多数
用于产生、编辑图形的命令,但仍有某些命令未被提
供。为便于开发人员进行个性化开发,CAD提供了二次
开发语言 ,如 AutoLISP、VisualLISP、VBA等。其 中,
AutoLISP作为一种简便易学的解释性语言,备受用户
青睐。AutoLISP是一种嵌入 AutoCAD软件包的 Lisp编
程语言 ,它属于符号处理语言,又称函数型语言,每个
函数都是以表的形式书写的,既可以交互执行 ,也可写
成程序。
3程序总体思路及结构
图 1为批量打印程序(Vmp.Lsp)总体思路及结构
图。由图可知,Vmp.Lsp程序主要包括三部分:“交互式
输入绘图参数”、“打印参数 自动设置”和“循环打印操
作”。“交互式输入绘图参数”主要功能:采用交互式的
输入绘图参数;为提高打印速度,程序仅需点选打
印范围的左上角至右下角对角点。“打印参数 自动设
置”主要功能:为 PLOT命令的执行而自动设置打印参
数,包括 自动提取打印机默认名称、自动计算打印范围
与打印比例、自动设置图纸尺寸、打印样式表及打印偏
移等。“循环打印操作”主要功能:完成“赋初值”一“调
用 PLOT命令打印”一“再赋值”一“再调用PLOT命令
打印”等一系列工作,是实现批量打印的关键所在。
互式输入绘图参
打印参数自动设置
打印机名称 I I打印张数 I I打印比例
循环打印操作
打印窗选点 卜 打印操作PLOT卜一—-骺环参数i+l
批量打印结束
图 1批量打印程序(Vmp.Lsp)总体思路及结构图
4程序实现的关键
(1)重要的打印参数包括“打印机默认名称”、“打
印页数”及“打印比例”,打印参数均可通过交互方式输
入,但工作效率将大幅下降,故采用自动
及计算进
行参数设置。
① 自动提取“打印机默认名称”
通过(vl—registry—read)函数提取默认打印机在注
册表中的信息 ,采用(vl—string—search)及(substr)函数
进一步提取默认打印机的名称。实现语句如下:
(setq Pstr(vl—registry—read(strcat”HKEY
_
CUR—
REN r_USER\\Soflware\\Microsofl\\⋯’Windows NT~\Cur—
rentVersion\\WindOWs”)”Device”))
21
信 息 技术 2012年(第4l卷)第3期
(setq Pstr (substr Pstr 1 (vl—string—search II.11
Pstr)))
(setq Pname Pstr)
② 自动计算“打印页数”
由窗选点 Ptl、Pt2计算所选打印范围的总高度,将
其与(~x2 x1)及(/297 420)求商后 ,即可得打印页数
n 。实现语句:(setq y12(一yl y2))(setq n(/(/(一yl
y2)(一x2 x1))(/297 420)))
③ 自动计算“打印比例”
由窗选点 Ptl、Pt2计算所选打印范围的宽度 ,将其
与(一x2 x1)及 420求商后,即可求得。实现语句:(setq
Pbl(strcat”1:”(rtos(,(一x2 x1)420)2)))
(2)LISP语言是通过 Command函数来调用 PLOT
命令实现打印功能。经过在 CAD命令行中反复摸索与
测试,得知 Plot命令基本结构依次为:”是否需要详细
打印配置”、”布局名或模型”、”输出设备名称”、”图纸尺
寸”、”图纸单位”、”图形方向”、”是否反向打印”、”打印
区域”、”打印比例”、”打印偏移”、”是否按样式打印”、”
打印样式表名称”、”是否打印线宽”、”着色打印设置”、”
是否打印到文件”、”是否保存对页面设置的修改”、”是
_甭继续打印”。
文现语句:(Command”一Plot””Y”””Pname Pcc”
M””L””N””W ”Pt3 Pt4 Pbl”C””Y”Pys”Y””A””N”
⋯N⋯Y”)。其中:Pname为输出设备(打印机)名称、Pcc
为图纸尺寸、Pbl为打印比例、Pys为打印样式表名、”
为是 、” 为否。
(3)打印过程要实现批量处理的功能,可使用循环
函数(Repeat n)。循环过程中,循环次数取“打印页数”
n ,循环变量取“窗选打印点”Pt5、Pt6,循环步长取 1.0。
具体思路 :先给“窗选打印点”赋初值 Pt3、Pt4,然后调
用 Plot命令打印,第一次打印结束;随后再给“窗选打
印点”赋下一个数值 、接着调用 Plot命令打印;如此循
环,直至打印结束。实现语句如下:
(Repeat(一n 1)(setq x5 x3 y5(一vl( y34 i)))
(上接 126页)的需要,而且环境污染严重。
7_2养护技工严重缺乏
兰 州 公 路 总 段 永 登 公 路 管 理 段 管 养 里 程
197.791km,而从事一线养护职工只有 40人左右,平均
每人养近 5km路程,养护技工严重缺乏,公路 日常养护
靠雇用大量民工来进行。一方面加大财务开支,造成段
上经费紧缺,另一方面对安全不利,民工为不固定人
群,安全意识淡薄,对管理带来一定难度;缺乏基本的
22
(setq x6 x4 y6(一y5 y34))
(setq pt5(1ist x5 y5)pt6(1ist x6 y6))
r command ”~Plot””Y”””Pname Pcc”M””L””N
”W”Pt5 Pt6 Pbl”C””Y”Pys”Y””A””N””N””Y”、
(setq x3 x5 y3 y5 x4 x6 y4 y6)(setq i(+i 1)))
5应用效果
采用 CAD软件自带的Plot命令打印时,每次均需
要设置相关打印参数,还需要点选打印范围及设置打
印比例,操作过程较为繁琐 ,当打印多张图纸时,更是
费时费力。采用编写的Vmp命令打印时,输人命令后,
仅需点选打印范围的左上角和右下角,程序便会 自动
分析、计算及提取打印参数,逐页进行 自动打印。
以打印 100页路基横断面设计图纸为例,采用 Plot
命令打印时,需要计算打印比例 1次 、点选打印窗口
100次,耗时约 25分钟左右;而采用 Vmp命令打印时,
仅需点选打印范围的两个对角点,其余打印设置均 自
动完成,耗时最多不超过 10秒钟。由此可见,Vmp命令
与Plot命令相比,具有操作简便 、自动化和智能化程度
高,输出图纸便捷等优点,可大幅度提供工作效率。
6结束语
工程设计人员在从事 日常工作时,可通过软件提
供的二次开发工具编写适合自己工作需要的程序,以
便提高工作效率。
参考文献
[1]吴永进 ,林美樱.AutoLISP&DCL基础篇[M].北京:中国铁道
出版社,2002.
[2]郭秀娟,于全通,范小鸥,等.AutoLISP语言程序设计[M].北
京:化学工业出版社,2008.
[3]程绪琦,等.AutoCAD2006中文版
教程[M].北京:电子T
业出版社,2005.
养护知识及操作技能,不能按操作规程进行操作,所以
对养护质量不能很好地保证。
参考文献 :
[1] JTGH10—2009[S].公路养护技术
.
[2] JTGH11-2004[s].公路桥涵养护规范.
[3] JTGF40—2004[S].公路沥青路面施工技术规范