您现在正在浏览:首页 > 职教文章 > 职教论文 > 增加AUTOCAD在文字处理上的功能

增加AUTOCAD在文字处理上的功能

日期: 2010-3-13 3:01:34 浏览: 77 来源: 学海网收集整理 作者: 未知

一、说明
在用AUTOCAD制图的过程中,必然要写说明性文字。当然在制表和写设计说明时,文字量就更大,AUTOCAD写文字并无难处,难的是怎么使写出的文字的尺寸、间距、对齐等方面象文字处理软件那样合适。若用AUTOCAD基本命令来处理,会很麻烦,并影响作图速度。为此我编写了一些小程序供大家使用。这次我提供如下两个程序:
二、程序的安装及使用
先把ZDDQ.LSP和ZDJT.LSP拷贝到一个特定的目录下(如:C:\R12\SUPPORT或C:\TCH\SYS等)。用户可以将持到AUTOCAD或其它开发软件的系统菜单上,通过菜单来调动,也可以AUTOCAD环境COMMAND后面用LOAD命令装入,形成一个附加命令ZDDQ或ZDST。
1.将程序调用装入系统菜单
先找到菜单源文件ACAD.MNU,并编辑它。在***POP1最后加下面内容。
[字的对齐]^C^C^P(“ZDDQ”);ZDDQ;^P。
[字的间距调整]^C^C^P(LOAD“ZDJT”);ZDJT;^P。用鼠标点取下拉菜单即可调用。
2.命令调用ZDDQ.LSP、ZDJT.LSP
在COMMAND后面输入(LOAD“ZDDQ”)或(LOAD“ZDJT”),产生可用命令ZDDQ、ZDJT,击入命令按提示操作。
3.两程序在使用中基本为中文提示,易用,现已在我院网络上全面使用。
4.两程序适用于AUTOCADR10.0,R11,R12.0。
三、操作过程
1.多文字对齐。提示如下:(其中“﹤﹥”中为缺省的选项)
选择对齐方式如下:L左/R右/C中心/M中点﹤L﹥:
选择对齐方向如下:1横向对齐(Y座标一致).2纵向对齐(X座标一致)﹤2﹥:
点取对齐点﹤点取参照实体﹥:(即用鼠标在屏上点取对齐的位置,缺省后,提出让你点取参照目标字,这样后面选上的文字与对齐)
选取文字(自动滤非文字类实体,且不用考虑次序,开窗口选也可)。
2.多文字的间距调整,提示如下:
文字间距调整方式如下:
1.水平2.垂直3.斜向﹤1﹥:
①若选“1”或缺省值,则
*输入各文字水平距值(或用鼠标点取)
*选择对齐方式:(C中心/L左侧/R右侧/H中心)﹤L﹥
1若选“L”或缺省,则:
*输入这组文字起点。
*按选后次序选取文字。
2其它类推。
选“2”,则:
*输入文字垂直间距值(或用鼠标点取):
其它同①。
选“3”,则:
*按先后次序选取文字。
*点取斜线起点(即文字排列方向线)。
*点取斜线终点。
(结果所选文字在斜线起点和终点间等分排列)。
四、源程序如下:
1.多文字的对齐:
;--------------------
;1996.03.04
;
(defunc:zddq(/intxsizeentent1o1o2o3o4aaaoldsiazenewsize
indexbbccp0p1pppent0bssa1a2a3a4a5a6)
(setqi1)
(princ"\n")(princ"选择对齐方式如下:")(princ)
(setqa(getstring"\nL左/R右/C中心/M中点﹤L﹥:"))
(if(=a"")(setqa"L"))
(setqa(strcasea))
(cond((=a"L")(setqa10a211a410a510))
((=a"M")(setqa11a210a411a511))
((=a"R")(setqa12a210a411a511))
((=a"C")(setqa14a210a411a511))
)
(setqb(getint"\n1.横向对齐(使Y座标一样)2.纵向对齐(使X座标一样)﹤2﹥:"))
(setqtxsize(getpoint"\n点取对齐点﹤点取参照实体﹥:"))
(princ"\n")(princ"选取文字(自动滤去非文字实体):")(princ)
(while(﹤i10000)
(setqss(ssget))
(setqn(sslengthss))
(setqindex0)
(repeatn
(setqent0(entget(ssnamessindex)))
(if(=(cdr(assoc72ent0))0)
(progn
(setqa410)
(if(/=a10)(setqa511)(setqa510))
)
)
(setqindex(+1index))
(setqtype(assoc0ent0))
(if(="TEXT"(cdrtype))
(progn
(setqp0(assoc72ent0))
(setqp(cons(carp0)a1))
(setqpp(substpp0ent0))
(setqold(assoc11pp))
(if(=a"L")
(setqa3(list00))
(setqa3(cdr(assoc11pp)))
)
(setqnew(cons(carold)a3))
(setqent(substnewoldpp))
(setqo1(cadr(cdr(assoca4ent0))))
(setqo2(car(cdr(assoca4ent0))))
(if(=txsizenil)
(progn
(setqa6(entget(ssnamess0)))
(setqa6(cdr(assoca4a6)))
(setqo3(cara6)o4(cadra6))
)
(setqo3(cartxsize)o4(cadrtxsize))
)
(setqoldsize(assoca5ent0))
(if(and(/=bnil)(/=b2))
(setqaao2bbo4cc(caroldize))
(setqaao3bbo1cc(cdroldsize))
)
(setqnewsize(cons(caroldsize)(listaabb)))
(setqent1(substnewsizeoldsizeent))
(entmodent1)
)
)
)
)
(prin1)
)
;--------------------
2.多文字的间距调整
editdate:1995.6.1
(defunc:zdjt(/newoldentent1indexssss1s2cjsjnxxsyyswbwgwcwg0wg1zbtypefsijbbbbj1bj2aj1aj2cj1cj2$a$c$bss1ss2dj1dj2zxej1ej2fj1fj2zkjd)
(setvar"cmdecho"0)
;(princ"\n1.order:fromtoptobutton.fromlefttoright")
;(princ"\n2.thereisoveraentity")(princ)
(princ"\n间距调整方式选择如下:")(princ)
(setqsjnilcjnil)
(setqs1(getint"\n1.水平2.垂直3.斜向﹤1﹥:"))
(if(/=s13)
(progn
(if(=s1nil)(setqs11))
(if(=s11)(setqsj(getdist"\n输入文字水平间距值(或用鼠标点取):"))
(setqcj(getdist"\n输入文字垂直间距值(或用鼠标点取):")))
(setqfs(strcase(getstring"\n选择对齐方式(C中心/L左侧/R右侧/M中点)﹤L﹥:")))
(if(=fs"M")(progn
(command"osnap""nea")
(setqss1(getpoint"\n文字起点:"))
(setqss2(getcornerss1"\n文字终点:"))
(setqs2(polarss1(angless1ss2)(/(distancess1ss2)2)))
(command"osnap""none")
)
(setqs2(getpoint"\n这组文字起点textlocationpoint:"))
)
(setqx(cars2)y(cadrs2))
(princ"\n按先后次序选取文字")(princ)
(setqss(ssget))
(setqn(sslengthss)index0i0j0)
(repeatn
(setqent(entget(ssnamessindex)))
(if(="TEXT"(cdr(assoc0ent)))
(progn
(setqi(+i1))
(if(=s11)
(setqzb(car(CDR(assoc10(entget(ssnamessindex))))))
(setqzb(CADR(cdr(assoc10(entget(ssnamessindex))))))
)
(setqwb(cdr(assoc1(entget(ssnamessindex))))
wg(cdr(assoc40(entget(ssnamessindex))))
zk(cdr(assoc41(entget(ssnamessindex))))
jd(cdr(assoc50(entget(ssnamessindex))))
zx(cdr(assoc7(entget(ssnamessindex))))
)
(set(read(strcat"b"(itoai)))zb);coordinate
(set(read(strcat"a"(itoai)))wb);word
(set(read(strcat"c"(itoai)))wg);hight
(set(read(strcat"d"(itoai)))zx);wordstyle
(set(read(strcat"e"(itoai)))zk);wordwide
(set(read(strcat"f"(itoai)))jd);wordengle
(setqnew(cons(car(assoc1ent))""))
(setqent1(substnew(assoc1ent)ent))
(entmodent1)
)
)
(setqindex(+index1))
)
(setqni)
(while(﹥=n2)
(setqj1)
(while(﹤=j(-n1))
(setqbj1(eval(read(strcat"b"(itoaj)))))
(setqbj2(eval(read(strcat"b"(itoa(+j1))))))
(setqaj1(eval(read(strcat"a"(itoaj)))))
(setqaj2(eval(read(strcat"a"(itoa(+j1))))))
(setqcj1(eval(read(strcat"c"(itoaj)))))
(setqcj2(eval(read(strcat"c"(itoa(+j1))))))
(setqdj1(eval(read(strcat"d"(itoaj)))))
(setqdj2(eval(read(strcat"d"(itoa(+j1))))))
(setqej1(eval(read(strcat"e"(itoaj)))))
(setqej2(eval(read(strcat"e"(itoa(+j1))))))
(setqfj1(eval(read(strcat"f"(itoaj)))))
(setqfj2(eval(read(strcat"f"(itoa(+j1))))))
;(if(/=s11)(setqbbbbj1bj1bj2bj2bbb));-----------------
(if(AND(=S11)(﹥bj1bj2))(BBBB))
(if(AND(=S12)(﹤bj1bj2))(BBBB))
(setqj(+j1))
)
(setqn(-n1))
)
(setqn0)
(repeati
(setqn(+n1))
(setqwg(eval(read(strcat"c"(itoan)))))
(setqwb(eval(read(strcat"a"(itoan)))))
(setqzx(eval(read(strcat"d"(itoan)))))
(setqzk(eval(read(strcat"e"(itoan)))))
(setqjd(eval(read(strcat"f"(itoan)))))
(setqzk2(cdr(assoc41(tblsearch"style"zx)))
zt(cdr(assoc3(tblsearch"style"zx)))
zt2(cdr(assoc4(tblsearch"style"zx)))
)
(if(/=zkzk2)
(if(=(strcasezx)"STANDARD")
(command"style"zx"""0"zk"0""n""n""n")
(command"style"zx"""0"zk"0""n""n")
)
)
(if(=s11)(progn
(setqxs(+x(*sj(-n1))))
(setqzb(listxsy))
(if(=fs"")
(if(﹥(cdr(assoc40(tblsearch"style"zx)))0.00001)
(command"text"zb(/(*jd180.0)pi)wb)
(command"text"zbwg(/(*jd180.0)pi)wb)
)
(if(﹥(cdr(assoc40(tblsearch"style"zx)))0.00001)
(command"text"fszb(/(*jd180.0)pi)wb)
[KG*2](command"text"fszbwg(/(*jd180.0)pi)wb)
)
)
)
(progn
(setqys(-y(*cj(-n1))))
(setqzb(listxys))
(if(=fs"")
(if(﹥(cdr(assoc40(tblsearch"style"zx)))0.00001)
(command"text"zb(/(*jd180.0)pi)wb)
(command"text"zbwg(/(*jd180.0)pi)wb)
)
(if(﹥(cdr(assoc40(tblsearch"style"zx)))0.00001)
(command"text"fszb(/(*jd180.0)pi)wb)
(command"text"fszbwg(/(*jd180.0)pi)wb)
)
)
)
)
)
)
(progn
(princ"\n按先后次序选取文字")(princ)
(setqss(ssget)cd(sslengthss))
(princ"\n按选取文字先后次序,从斜线起点至终点等分这组文字")(princ)
(setqqd(getpoint"\n斜线起点:"))
(setqzd(getpointqd"\n斜线终点:"))
(setqjd(angleqdzd))
(setqjl(distanceqdzd)jl(/jl(-cd1)))
(setqi0)
(repeatcd
(setqzd(polarqdjd(*ijl)))
(setqwg(cdr(assoc40(entget(ssnamessi)))))
(setqwb(cdr(assoc1(entget(ssnamessi)))))
(command"text"zdwg"0"wb)
(setqi(1+i))
)
)
)
)
(DEFUNBBBB()
(setqb$bj1a$aj1c$cj1)
(set(read(strcat"b"(itoaj)))bj2)
(set(read(strcat"a"(itoaj)))aj2)
(set(read(strcat"c"(itoaj)))cj2)
(set(read(strcat"b"(itoa(+j1))))b$)
(set(read(strcat"a"(itoa(+j1))))a$)
(set(read(strcat"c"(itoa(+j1))))c$)
)

返回顶部