




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
增加AUTOCAD在文字处理上的功能一、说明 在用AUTOCAD制图的过程中,必然要写说明性文字。当然在制表和写设计说明时,文字量就更大,AUTOCAD写文字并无难处,难的是怎么使写出的文字的尺寸、间距、对齐等方面象文字处理软件那样合适。若用AUTOCAD基本命令来处理,会很麻烦,并影响作图速度。为此我编写了一些小程序供大家使用。这次我提供如下两个程序:二、程序的安装及使用先把ZDDQLSP和ZDJTLSP 拷贝到一个特定的目录下(如:C:R12SUPPORT或C:TCHSYS等)。用户可以将持到AUTOCAD或其它开发软件的系统菜单上,通过菜单来调动,也可以AUTOCAD环境COMMAND后面用LOAD命令装入,形成一个附加命令ZDDQ或ZDST。1将程序调用装入系统菜单先找到菜单源文件ACAD.MNU,并编辑它。在* * * POP1最后加下面内容。字的对齐CCP(“ZDDQ”);ZDDQ;P。字的间距调整CCP(LOAD“ZDJT”);ZDJT;P。用鼠标点取下拉菜单即可调用。 2命令调 用ZDDQLSP、ZDJTLSP在COMMAND后面输入(LOAD“ZDDQ”)或(LOAD“ZDJT”),产生可用命令ZDDQ、ZD JT,击入命令按提示操作。3两程序在使用中基本为中文提示,易用,现已在我院网络上全面使用。 4两程序适用于AUTOCAD R10.0, R11,R12.0。 三、操作过程1多文字对齐。提示如下:(其中“”中为缺省的选项)选择对齐方式如下:L左/R右/C中心/M中点: 选择对齐方向如下:1横向对齐(Y座标一致). 2纵向对齐(X座标一致) : 点取对齐点:(即用鼠标在屏上点取对齐的位置,缺省后,提出让你点取参照目标字,这样后面选上的文字与对齐) 选取文字(自动滤非文字类实体,且不用考虑次序,开窗口选也可)。 2多文字的间距调整,提示如下: 文字间距调整方式如下:1. 水平 2. 垂直 3. 斜向 : 若选“1”或缺省值,则* 输入各文字水平距值(或用鼠标点取)* 选择对齐方式:(C中心/L左侧/R右侧/H中心) 1 若选“L”或缺省,则:* 输入这组文字起点。* 按选后次序选取文字。2 其它类推。 选“2”,则:* 输入文字垂直间距值(或用鼠标点取):其它同。 选“3”,则:* 按先后次序选取文字。* 点取斜线起点(即文字排列方向线)。* 点取斜线终点。(结果所选文字在斜线起点和终点间等分排列)。 四、源程序如下:1多文字的对齐: ;- ; 1996.03.04 ; (defun c:zddq ( / i n txsize ent ent1 o1 o2 o3 o4 a aa oldsiaze newsize index bb cc p0 p1 p pp ent0 b ss a1 a2 a3 a4 a5 a6) (setq i 1) (princ n)(princ 选择对齐方式如下:)(princ) (setq a (getstring n L左/R右/C中心/M中点 : ) (if (= a )(setq a L) (setq a (strcase a) (cond (= a L)(setq a1 0 a2 11 a4 10 a5 10)(= a M)(setq a1 1 a2 10 a4 11 a5 11)(= a R)(setq a1 2 a2 10 a4 11 a5 11)(= a C)(setq a1 4 a2 10 a4 11 a5 11) ) (setq b (getint n1.横向对齐(使Y座标一样) 2. 纵向对齐(使X座标一样) : ) (setq txsize (getpoint n点取对齐点: ) (princ n)(princ 选取文字(自动滤去非文字实体):)(princ) (while ( i 10000) (setq ss (ssget) (setq n (sslength ss) (setq index 0) (repeat n (setq ent0 (entget (ssname ss index) (if (= (cdr (assoc 72 ent0) 0)(progn (setq a4 10) (if (/ = a1 0)(setq a5 11)(setq a5 10) ) (setq index (+ 1 index) (setq type (assoc 0 ent0) (if (= TEXT (cdr type)(progn (setq p0 (assoc 72 ent0) (setq p (cons (car p0) a1) (setq pp (subst p p0 ent0) (setq old (assoc 11 pp) (if (= a L) (setq a3 (list 0 0) (setq a3 (cdr (assoc 11 pp) ) (setq new (cons (car old) a3) (setq ent (subst new old pp) (setq o1 (cadr (cdr (assoc a4 ent0) (setq o2 (car (cdr (assoc a4 ent0) (if (= txsize nil) (p rogn(setq a6 (entget (ssname ss 0)(setq a6 (cdr (assoc a4 a6)(setq o3 (car a6) o4 (cadr a6) ) (setq o3 (car txsize) o4 (cadr txsize) ) (setq oldsize (assoc a5 ent0) (if (and (/= b nil)(/= b 2) (setq aa o2 bb o4 cc (car oldize) (setq aa o3 bb o1 cc (cdr oldsize) ) (setq newsize (cons (car oldsize) (list aa bb) (setq ent1 (subst newsize oldsize ent) (entmod ent1) ) ) ) ) (prin1);-2多文字的间距调整 edit date: 1995.6.1 (defun c:zd jt ( / new old ent ent1 index s ss s1 s2 cj sj n x xs y ys wb wg wc wg0 wg1 zb type fs i j bbb bj1 bj2 aj1 aj2 cj1 cj2 $a $c $b ss1 ss2 dj1 dj2 zx ej1 ej2 fj1 fj2 zk jd) (setvar cmdecho 0); (princ n1. order: from top to button. from left to right); (princ n2. there is over a entity)(princ) (princ n间距调整方式选择如下:)(princ) (setq sj nil cj nil) (setq s1 (getint n 1.水平 2.垂直 3.斜向 : )(if (/ = s1 3) (progn (if (= s1 nil)(setq s1 1) (if (= s1 1) (setq sj (getdist n输入文字水平间距值(或用鼠标点取):) (setq cj (getdist n输入文字垂直间距值(或用鼠标点取):) (setq fs (strcase (getstring n选择对齐方式(C中心/L左侧/R右侧/M中点) : ) (if (= fs M)(progn(command osnap nea)(setq ss1 (getpoint n文字起点: )(setq ss2 (getcorner ss1 n文字终点: )(setq s2 (polar ss1 (angle ss1 ss2) (/ (distance ss1 ss2) 2)(command osnap none) ) (setq s2 (getpoint n这组文字起点text location point:) ) (setq x (car s2) y (cadr s2) (princ n按先后次序选取文字)(princ) (setq ss (ssget) (setq n (sslength ss) index 0 i 0 j 0) (rep eat n(setq ent (entget (ssname ss index)(if (= TEXT (cdr (assoc 0 ent) (pr ogn (setq i (+ i 1)( if (= s1 1) (setq zb (car (CDR (assoc 10 (entget (ssname ss index)(setq zb (CADR (cdr (assoc 10 (entget (ssname ss index)(set q wb (cdr (assoc 1 (entget (ssname ss index) wg (cdr (assoc 40 (entget (ssname ss index)zk (cdr (assoc 41 (entget (ssname ss index)jd (cdr (assoc 50 (entget (ssname ss index)zx (cdr (assoc 7 (entget (ssname ss index) ) (set (read (strcat b (itoa i) zb);coordinate (set (read (strcat a (itoa i) wb);word (set (read (strcat c (itoa i) wg);hight (set (read (strcat d (itoa i) zx);word style (set (read (strcat e (itoa i) zk);word wide (set (read (strcat f (itoa i) jd);word engle (setq new (cons (car (assoc 1 ent) ) (setq ent1 (subst new (assoc 1 ent) ent) (entmod ent1) ) ) (setq index (+ index 1) ) (setq n i) (while (= n 2) (setq j 1) (wh ile ( bj1 bj2)(BBBB)(if (AND (= S1 2)( (cdr (assoc 40 (tblsearch style zx) 0.00001)(command text zb (/ (* jd 180.0) pi) wb)(command text zb wg (/ (* jd 180.0) pi) wb) )(if ( (cdr (assoc 40 (tblsearch style zx) 0.00001) (command text fs zb (/ (* jd 180.0) pi) wb) KG*2(command text fs zb wg (/ (* jd 180.0) pi) wb) ) ) ) (p rogn(setq ys (- y (* cj (- n 1)(setq zb (list x ys)( if (= fs )( if ( (cdr (assoc 40 (tblsearch style zx) 0.00001)(command text zb (/ (* jd 180.0) pi) wb)(command text zb wg (/ (* jd 180.0) pi) wb) )(if ( (cdr (assoc 40 (tblsearch style zx) 0.00001) (command text fs zb (/ (* jd 180.0) pi) wb) (command text fs zb wg (/ (* jd 180.0) pi) wb) ) ) ) ) ) ) (progn (princ n按先后次序选取文字)(princ) (setq ss (ssget) cd (sslength ss) (princ n按选取文字先后次序,从斜线起点至终点等分这组文字)(princ) (setq qd (getpoint n斜线起点: ) (setq zd (getpoint qd n斜线终点: ) (setq jd (angle qd zd) (setq jl (distance qd zd) jl (/ jl (- cd 1) (setq i 0) (repeat cd (setq zd (polar qd jd (* i jl) (setq wg (cdr (assoc 40 (entget (ssname ss i) (setq wb (cdr (assoc 1 (entget (ssname ss i) (command text zd wg 0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论