不同数字宽度比例自动调整。
<p>钢筋编号,从1~上百,如1~199,每个数字都在圆内,用lisp可以自动找到所有文字,并全部修改为一个高度和宽度比例,但我想将1~9号数字的宽度比例用0.7,10~99号数字的宽度比例用0.65,100~199号数字的宽度比例用0.55,如何能自动搜索文字字段并修改圆内数字相应宽度比例?是个头痛的问题,请高手不吝赐教。</p><p>;********** PMZT 将钢筋标注字体左对齐(L)***<br/>(defun PMZT()</p><p> (setq old_hh 2.50) ;字体高度(默认为2.5)<br/>(setq str_hh (strcat "\n 请输入钢筋标注字体高度<" (rtos old_hh 2) ">: "))<br/>(setq hh (getdist str_hh))<br/>(if (null hh) (setq hh old_hh))</p><p> (setq zkxs (getreal "\n 请输入钢筋标注字体宽度比例系数<0.7>: "));字体宽度系数(默认为0.7) <br/>(if (null zkxs) (setq zkxs 0.7)) <br/> (setq sszt (ssget "X" '((0 . "TEXT"))))<br/> (command "justifytext" "P" "" "M")<br/> (ztdX)<br/> (prin1)<br/>)</p><p>(defun ztdX()<br/> (setq i 0) <br/> (setq nn (sslength sszt))<br/> (repeat nn<br/> (setq ssn (ssname sszt i))<br/> (setq ssdata (entget ssn))<br/> (setq sstyp (cdr (assoc 0 ssdata)))<br/> (if (= sstyp "TEXT")<br/> (progn <br/> (setq old_hh (assoc 40 ssdata));改文字高度<br/> (setq new_hh (cons 40 hh))<br/> (setq old_kb (assoc 41 ssdata));改宽度比例数<br/> (setq new_kb (cons 41 zkxs))<br/> (setq ssdata (subst new_hh old_hh ssdata))<br/> (setq ssdata (subst new_kb old_kb ssdata))<br/> (entmod ssdata) <br/> );end if<br/> <br/> );end if <br/> (setq i (1+ i))<br/> <br/> )<br/> (prompt "\n 正在处理...请稍候......")<br/> (prin1)<br/>)</p> 本帖最后由 作者 于 2009-6-30 11:50:49 编辑;改圆内文字宽度 明经 ZZXXQQ 2009.6.28
(defun PMZT ()
(setvar "CMDECHO" 0)
(setq old_hh 2.5);字体高度(默认为2.5)
(setq str_hh (strcat "\n 请输入钢筋标注字体高度<" (rtos old_hh 2) ">: "))
(setq hh (getdist str_hh))
(if (null hh) (setq hh old_hh))
;(setq sszt (ssget "X" '((0 . "TEXT"))))
(if (setq ssy (ssget "X" '((0 . "CIRCLE")))) (progn
(prompt "\n 正在处理...请稍候......")
(command "justifytext" "P" "" "M")
(setq i 0)
(repeat (sslength ssy)
(setq ssn (ssname ssy i))
(setq ssdata (entget ssn))
(setq pc (cdr(assoc 10 ent)))
(setq r (cdr(assoc 40 ent)))
(setq p1 (polar(polar pc 0 r) (/ pi 2) r))
(setq p2 (polar(polar pc pi r) (/ pi -2) r))
(if (setq sst (ssget "W" p1 p2 '((0 . "TEXT")))) (progn
(setq entt (entget(ssname sst 0)))
(setq sl (strlen(cdr(assoc 1 entt))))
(setq new_kb (cons 41 (cond ((= sl 1) 0.7) ((= sl 2) 0.65) (T 0.55))));改宽度比例数
(setq entt (subst (cons 40 hh) (assoc 40 entt) entt))
(setq entt (subst new_kb (assoc 41 entt) entt))
(entmod entt)
))
(setq i (1+ i))
)
))
(setvar "CMDECHO" 1)
(princ)
)
<p><font face="Verdana" color="#da2549"><strong>感谢ZZXXQQ回帖,你用了</strong><font color="#000000"> </font><a href="http://www.mjtd.com/object/autolisp/strlen.htm" target="_black"><font color="#0000ff">strlen</font></a>来确定字符串的长度,以此来判断字符使用的宽度比例系数。</font></p><p><font face="Verdana" color="#da2549">但我只是要改变每个圆圈以内的字符宽度,在圆圈以外的数字,有的是3个字符,有的字符更多,都用0.7的宽度比例系数.如何搜索圆圈以内的字符?</font></p> 2楼已改。再试试看。 <p><font color="#ff0000">19,20行有点小遗漏,改成以下可用。</font></p><p><font color="#ff0000">(</font><a href="http://www.mjtd.com/object/autolisp/setq.htm" target="_black"><font color="#0000ff">setq</font></a> p1 <font color="#ff0000">(</font><a href="http://www.mjtd.com/object/autolisp/polar.htm" target="_black"><font color="#0000ff">polar</font></a><font color="#ff0000">(</font>polar pc <font color="#008000">0</font> r<font color="#ff0000">)</font>
<font color="#ff0000">(</font><a href="http://www.mjtd.com/object/autolisp/47.htm" target="_black"><font color="#0000ff">/</font></a> pi <font color="#008000">2</font><font color="#ff0000">)</font> r<font color="#ff0000">)</font><font color="#ff0000">)</font><br/><font color="#ff0000">(</font><a href="http://www.mjtd.com/object/autolisp/setq.htm" target="_black"><font color="#0000ff">setq</font></a> p2 <font color="#ff0000">(</font><a href="http://www.mjtd.com/object/autolisp/polar.htm" target="_black"><font color="#0000ff">polar</font></a><font color="#ff0000">(</font>polar pc pi r<font color="#ff0000">)</font>
<font color="#ff0000">(</font><a href="http://www.mjtd.com/object/autolisp/47.htm" target="_black"><font color="#0000ff">/</font></a> pi <font color="#008000">-2</font><font color="#ff0000">)</font> r<font color="#ff0000">)</font><font color="#ff0000">)</font></p><p><strong><font face="Verdana" color="#da2549">ZZXXQQ兄思路很好,学习了。3q。</font></strong></p><p><br/></p> 功能很强大
页:
[1]