浅析基于LISP的多行文字对齐在AutoCAD制图中的实践应用

2016-11-09 23:20王建江杨德贵俎丽萍
数字技术与应用 2016年9期

王建江 杨德贵 俎丽萍

摘要:工程图纸规范化要求越来越普遍,而AutoCAD作为工程制图的主要工具,在文字处理方面有所欠缺,外挂软件也大多没有多行文字对齐功能,这使得多行文字对齐操作繁琐,效率低下。本文介绍了一种多行文字对齐的处理方法,使得AutoCAD制图在多行文字对齐方面,减少了大量重复操作,弥补了AutoCAD在文字处理方面的不足,极大提高了工程设计人员的规范化制图效率。

关键词:AutoCAD二次开发 LISP语言 组码 文字对齐

中图分类号:TP391.72 文献标识码:A 文章编号:1007-9416(2016)09-0120-03

1 引言

在工程设计领域,AutoCAD用得越来越普遍,但AutoCAD在文字对齐方面存在明显不足,在图纸较多的情况下,文字对齐功能显得尤为重要。但有关文字对齐的软件很少,大多为外挂软件,AutoCAD版本升级后便不能再用,且缺少对多行文字的对齐处理。本人在实践中摸索出一种基于LISP的多行文字对齐的处理方法,希望能够起到抛砖引玉的作用。

2 文字对齐基本知识

2.1 文字对齐方式及其DXF组码表

工程图纸中常用的文字有text、Mtext两种,根据不同的DXF组码值,修改文字相关的坐标值即可改变文字的位置。其中text文字有组码10(对应基坐标)、组码11(对应对齐坐标)两种,Mtext文字只有组码10,需要注意的是,text文字只能修改其组码11才能改变其位置(组码73、72均为零时除外)。Text、Mtext文字的对齐方式及相关的组码值分别见表1、表2。

2.2 通用排序函数sort-se的用法

AutoCAD二次开发中经常会用到对各类对象的排序,下面介绍一个通用排序函数sort-se的用法。函数表达式为:(sort-se se dxf int fuzz k)

参数:

se为要排序的选择集;

dxf为排序依据的组码号;

int为组码值排序的项数;

fuzz为允许偏差,如不设偏差此项设为nil;

k为排序顺序,T为从大到小,nil为从小到大;

用法示例:(sort-se ss 10 1 2.5 T)表示把选择集ss中各对象按10组码y坐标排序,偏差2.5,从大到小的顺序排序,并返回排序后的新选择集。

2.3 文字对齐思路

多行文字对齐可以按文字的顶部、中间、底部位置对齐,由于中间位置更普遍,本文以中间位置为例。文字如果是多行文字,没有对齐坐标,只有基坐标,所以目标文字的坐标统一取基坐标。目标文字是单行文字的统一处理方式为:基坐标y值+1/2目标文字字高,目标文字是多行文字的处理方式:上对齐的减1/2字高,中对齐的不变,下对齐的加1/2字高。需对齐文字的新坐标y分单行文字、多行文字两种处理方法,多行文字对齐方式按上、中、下三类处理:上对齐的加1/2需对齐文字字高,中对齐的不变,下对齐的减1/2需对齐文字字高;单行文字对齐方式按四类处理:组码73为零,减1/2需对齐文字字高,如组码72为零改组码10坐标,否则改组码11坐标;上对齐的加1/2需对齐文字字高,改组码11坐标;中对齐的不变,改组码11坐标;下对齐的减3/10需对齐文字字高(减1/2字高+1/5字高,1/5字高为修正值),改组码11坐标。

3 程序源码

4 结语

将第3部分内容(附加sort-se函数内容)复制到空txt中,保存后把文件名中的“txt”改为“lsp”,在AutoCAD中加载后即可使用。使用方法:在命令行输入命令“dq”,先选择需对齐文字,再选择目标对齐文字(其数量可少于需对齐文字),即可实现多行文字对齐。本文利用AutoLISP开发的多行文字对齐程序,弥补了大多数软件在文字对齐方面的不足,使多行文字对齐变得简捷、有效,极大提高了操作效率。

参考文献

[1]二代龙震工作室.AutoCAD LISP/VLISP 函数库查询辞典[M].北京:中国铁道出版社,2003.

[2]陈伯雄,冯伟.Visual LISP 程序设计——技巧与范例[M].北京:人民邮电出版社,2002.