啵浪鼓 发表于 2009-9-27 01:18:00

[求助]文字改高度

<p>写了前面一段再也写不去了,菜鸟就是菜鸟,搞不定这程序哪出了问题,请帮忙改一下吧,</p><p>;TEXT,MTEXT,DMINENSION改字高</p><p>(defun c:tc ()&nbsp;<br/>&nbsp; (princ "Modify TEXT Height")<br/>&nbsp; (setvar "cmdecho" 0)<br/>&nbsp; (command "undo" "be")<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))&nbsp; ;这段结束就不对了<br/>&nbsp;&nbsp;&nbsp;&nbsp; (if (= "TEXT" (cdr (assoc 0 (entget (ssname ss i)))))&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 (ssname ss i)))))&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 (= "DMINENSION" (cdr (assoc 0 (entget (ssname ss i)))))&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; (setq t0 (cdr(assoc 40 (entget sst))))<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq m0 (cdr(assoc 40 (entget ssm))))<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq d0 (cdr(assoc 40 (entget ssd))))<br/>&nbsp;&nbsp;&nbsp;&nbsp; (princ (strcat "\n&lt;" (itoa (sslength tt3)) " 个文字高度为" (rtos t0) "&gt;"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;" (itoa (sslength mm3)) " 个文字高度为" (rtos m0) "&gt;"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;" (itoa (sslength dd3)) " 个文字高度为" (rtos d0) "&gt;"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; (initget (+ 2 4))<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq th (getdist "\n请输入新的字高:"))</p><p>&nbsp; (setq i 0)<br/>&nbsp; (repeat (sslength tt3)<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq si (ssname tt3 i))<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq thc (entget si) thc (subst (cons 40 th) (assoc 40 thc) thc))<br/>&nbsp;&nbsp;&nbsp;&nbsp; (entmod thc)<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq i (+ i 1))<br/>&nbsp; )<br/>(princ)<br/>)<br/></p>

caoyin 发表于 2009-9-27 11:14:00

<p>1.程序思路被复杂化了,多看看别人写的程序。</p><p>2.DMINENSION 对象的文字高度在扩展数据中</p>

啵浪鼓 发表于 2009-9-28 01:02:00

DMINENSION 对象的文字高度在扩展数据 在哪有啊,怎么提出来呀,网站上的搜索不好用,搜半天也没有相关的贴,不相关的贴出一堆,哎

caoyin 发表于 2009-9-28 01:26:00

<p>(entget ENAME '("ACAD"))</p><p>dxf组码 -3 后面的就是扩展数据,注意,真正的高度还要乘以标注样式的全局比例哦</p>

caoyin 发表于 2009-9-28 01:30:00

本帖最后由 作者 于 2009-9-28 2:03:29 编辑 <br /><br /> <p>错误...删除</p>

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

看来没有能力抓出来标注的字高了,还有什么标注样式的全局变量

liu_kunlun 发表于 2009-9-29 07:51:00

<p>对尺寸,用activex比较方便:</p><p>(vla-get-TextHeight (vlax-ename-&gt;vla-object ent))</p>

啵浪鼓 发表于 2009-9-29 13:05:00

<p>樓上的格式是怎樣寫的?</p><p>Command: (vla-get-TextHeight (vlax-ename-&gt;vla-object (entsel)))</p><p>Select object:<br/>"bad argument type: lentityp (&lt;Entity name: 7ef78160&gt; (1857.96 268.192 0.0))"</p><p>Command: (vla-get-TextHeight (vlax-ename-&gt;vla-object (ssget)))</p><p>"bad argument type: lentityp &lt;Selection set: 38b&gt;"</p>

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

<p>变量是entname,要用entsel,则为:</p><p>(vla-get-TextHeight (vlax-ename-&gt;vla-object (car (entsel))))</p><p></p>

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

Tks! 我要改成ssget能用的來配合整個程序的運用,entsel只能單選,不方便,謝謝樓上朋友﹗
页: [1] 2
查看完整版本: [求助]文字改高度