liu_kunlun 发表于 2009-9-29 19:11:00

你的程序中,(setq d0 (cdr(assoc 40 (entget ssd))))<br/>改为(setq d0 (vla-get-TextHeight (vlax-ename-&gt;vla-object ssd)))即可!

狂刀无痕 发表于 2009-9-29 19:56:00

关于标注的字高,n年前明总写过一个vba的,我也跟着搞过一个lisp的。你搜索一下

啵浪鼓 发表于 2009-9-29 23:53:00

<p>谢谢各位,改TEXT/MTEXT/DMINENSION字高的程序终于完成,以下贴出这段程序的代码,希望有用的人用上,其实程序可以再简单,但能力有限,就写出这个程序也花了一周时间,还要到处搜代码,晕S了</p><p>以下代码美中不中的是,由于采用ssget,所以如果存在所选字高不一样时,程序报字高只能随机选一个为参考</p><p>程序的目的是将所选TEXT/MTEXT/DMINENSION改字高,比如所选TEXT字里有字高为5和6的,将一并改为用户所输入的新字高,如果用户不输字高将放弃所有TEXT字高</p><p>(defun c:tc ()<br/>&nbsp; (princ "Modify TEXT Height")<br/>&nbsp; (setvar "cmdecho" 0)<br/>&nbsp; (command "undo" "be")<br/>&nbsp; (defun *error*(msg)<br/>&nbsp;&nbsp;&nbsp; (if (and (not (wcmatch msg "*函数被取消")) (/= msg "quit / exit abort"))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (princ (strcat "\n" msg))<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (command "_.undo" "_e")<br/>&nbsp;&nbsp;&nbsp; (setvar "cmdecho" 0)<br/>&nbsp;&nbsp;&nbsp; (setq *error* nil)<br/>&nbsp;&nbsp;&nbsp; (princ)<br/>&nbsp; )<br/>&nbsp; (setq ss&nbsp; (ssget '((0 . "TEXT,MTEXT,DIMENSION"))))<br/>&nbsp; (setq tt3 (ssadd) mm3 (ssadd) dd3 (ssadd) i 0)<br/>&nbsp; (while (&lt; i (sslength ss))<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq en(ssname ss i))<br/>&nbsp;&nbsp;&nbsp;&nbsp; (if (= "TEXT" (cdr (assoc 0 (entget en))))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (ssadd (ssname ss i) tt3)<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; (if (= "MTEXT" (cdr (assoc 0 (entget en))))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (ssadd (ssname ss i) mm3)<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; (if (= "DIMENSION" (cdr (assoc 0 (entget en))))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (ssadd (ssname ss i) dd3)<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq i (+ i 1))<br/>&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq&nbsp; i 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq sst (ssname tt3 i) ssm (ssname mm3 i) ssd (ssname dd3 i))<br/>&nbsp;&nbsp;&nbsp;&nbsp; (if (/= nil sst)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq t0 (cdr(assoc 40 (entget sst))))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (princ (strcat "\n&lt;" (itoa (sslength tt3)) " 个TEXT高度为" (rtos (cdr(assoc 40 (entget sst)))) "&gt;"))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (initget (+ 2 4))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq th (getdist "\n请输入新的字高:"))<br/>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (null th)(setq th t0))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; (if (/= nil ssm)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq m0 (cdr(assoc 40 (entget ssm))))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (princ (strcat "\n&lt;" (itoa (sslength mm3)) " 个MTEXT高度为" (rtos (cdr(assoc 40 (entget ssm)))) </p><p>"&gt;"))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (initget (+ 2 4))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq mh (getdist "\n请输入新的字高:"))<br/>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (null mh)(setq mh m0))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; (if (/= nil ssd)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq d0 (vla-get-TextHeight (vlax-ename-&gt;vla-object ssd)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;(setq d0 (cdr(assoc 40 (entget ssd))))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (princ (strcat "\n&lt;" (itoa (sslength dd3)) " 个DIM高度为" (rtos d0) "&gt;"))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (initget (+ 2 4))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq dh (getdist "\n请输入新的字高:"))<br/>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (null dh)(setq dh d0))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp; (setq i 0)<br/>&nbsp; (if (/= nil th)<br/>&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (repeat (sslength tt3)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq sit (ssname tt3 i))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq tht (entget sit) tht (subst (cons 40 th) (assoc 40 tht) tht))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (entmod tht)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq i (+ i 1))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (princ "|TEXT未作修改|")<br/>&nbsp; )</p><p>&nbsp; (setq i 0)<br/>&nbsp; (if (/= nil mh)<br/>&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (repeat (sslength mm3)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq sim (ssname mm3 i))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq thm (entget sim)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; old_h (cdr (assoc 40 thm))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; old_w (cdr (assoc 41 thm))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new_w (* old_w (/ mh old_h))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; thm (subst (cons 40 mh) (assoc 40 thm) thm)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; thm (subst (cons 41 new_w) (assoc 41 thm) thm)<br/>&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (entmod thm)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq i (+ i 1))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (princ "|MTEXT未作修改|")<br/>&nbsp; )</p><p>&nbsp; (setq i 0)<br/>&nbsp; (if (/= nil dh)<br/>&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (repeat (sslength dd3)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq sid (ssname dd3 i))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq h1 (/ dh 1.5) h2 (/ dh 5))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (command "dimoverride" "dimtxt" dh "dimasz" h1 "dimexe" h2 "dimexo" h2 "" sid "")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq i (+ i 1))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; (princ "|DIMENSION未作修改|")<br/>&nbsp; )<br/>(*error* "")<br/>)</p>
页: 1 [2]
查看完整版本: [求助]文字改高度