王建江 楊德貴 俎麗萍
摘要:工程圖紙規(guī)范化要求越來越普遍,而AutoCAD作為工程制圖的主要工具,在文字處理方面有所欠缺,外掛軟件也大多沒有多行文字對齊功能,這使得多行文字對齊操作繁瑣,效率低下。本文介紹了一種多行文字對齊的處理方法,使得AutoCAD制圖在多行文字對齊方面,減少了大量重復(fù)操作,彌補(bǔ)了AutoCAD在文字處理方面的不足,極大提高了工程設(shè)計人員的規(guī)范化制圖效率。
關(guān)鍵詞:AutoCAD二次開發(fā) LISP語言 組碼 文字對齊
中圖分類號:TP391.72 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9416(2016)09-0120-03
1 引言
在工程設(shè)計領(lǐng)域,AutoCAD用得越來越普遍,但AutoCAD在文字對齊方面存在明顯不足,在圖紙較多的情況下,文字對齊功能顯得尤為重要。但有關(guān)文字對齊的軟件很少,大多為外掛軟件,AutoCAD版本升級后便不能再用,且缺少對多行文字的對齊處理。本人在實(shí)踐中摸索出一種基于LISP的多行文字對齊的處理方法,希望能夠起到拋磚引玉的作用。
2 文字對齊基本知識
2.1 文字對齊方式及其DXF組碼表
工程圖紙中常用的文字有text、Mtext兩種,根據(jù)不同的DXF組碼值,修改文字相關(guān)的坐標(biāo)值即可改變文字的位置。其中text文字有組碼10(對應(yīng)基坐標(biāo))、組碼11(對應(yīng)對齊坐標(biāo))兩種,Mtext文字只有組碼10,需要注意的是,text文字只能修改其組碼11才能改變其位置(組碼73、72均為零時除外)。Text、Mtext文字的對齊方式及相關(guān)的組碼值分別見表1、表2。
2.2 通用排序函數(shù)sort-se的用法
AutoCAD二次開發(fā)中經(jīng)常會用到對各類對象的排序,下面介紹一個通用排序函數(shù)sort-se的用法。函數(shù)表達(dá)式為:(sort-se se dxf int fuzz k)
參數(shù):
se為要排序的選擇集;
dxf為排序依據(jù)的組碼號;
int為組碼值排序的項(xiàng)數(shù);
fuzz為允許偏差,如不設(shè)偏差此項(xiàng)設(shè)為nil;
k為排序順序,T為從大到小,nil為從小到大;
用法示例:(sort-se ss 10 1 2.5 T)表示把選擇集ss中各對象按10組碼y坐標(biāo)排序,偏差2.5,從大到小的順序排序,并返回排序后的新選擇集。
2.3 文字對齊思路
多行文字對齊可以按文字的頂部、中間、底部位置對齊,由于中間位置更普遍,本文以中間位置為例。文字如果是多行文字,沒有對齊坐標(biāo),只有基坐標(biāo),所以目標(biāo)文字的坐標(biāo)統(tǒng)一取基坐標(biāo)。目標(biāo)文字是單行文字的統(tǒng)一處理方式為:基坐標(biāo)y值+1/2目標(biāo)文字字高,目標(biāo)文字是多行文字的處理方式:上對齊的減1/2字高,中對齊的不變,下對齊的加1/2字高。需對齊文字的新坐標(biāo)y分單行文字、多行文字兩種處理方法,多行文字對齊方式按上、中、下三類處理:上對齊的加1/2需對齊文字字高,中對齊的不變,下對齊的減1/2需對齊文字字高;單行文字對齊方式按四類處理:組碼73為零,減1/2需對齊文字字高,如組碼72為零改組碼10坐標(biāo),否則改組碼11坐標(biāo);上對齊的加1/2需對齊文字字高,改組碼11坐標(biāo);中對齊的不變,改組碼11坐標(biāo);下對齊的減3/10需對齊文字字高(減1/2字高+1/5字高,1/5字高為修正值),改組碼11坐標(biāo)。
3 程序源碼
4 結(jié)語
將第3部分內(nèi)容(附加sort-se函數(shù)內(nèi)容)復(fù)制到空txt中,保存后把文件名中的“txt”改為“l(fā)sp”,在AutoCAD中加載后即可使用。使用方法:在命令行輸入命令“dq”,先選擇需對齊文字,再選擇目標(biāo)對齊文字(其數(shù)量可少于需對齊文字),即可實(shí)現(xiàn)多行文字對齊。本文利用AutoLISP開發(fā)的多行文字對齊程序,彌補(bǔ)了大多數(shù)軟件在文字對齊方面的不足,使多行文字對齊變得簡捷、有效,極大提高了操作效率。
參考文獻(xiàn)
[1]二代龍震工作室.AutoCAD LISP/VLISP 函數(shù)庫查詢辭典[M].北京:中國鐵道出版社,2003.
[2]陳伯雄,馮偉.Visual LISP 程序設(shè)計——技巧與范例[M].北京:人民郵電出版社,2002.