?

淺析基于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.

91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合