将单行文本改为多行文本的源程序
本帖最后由 作者 于 2007-11-6 9:14:40 编辑 <br /><br /> <p>不用多说,一目了然,关键是文本宽度计算</p><p>----------------------------------代码--------------------------------------------------</p><p>;********单行文本转换为多行文本xofox**********<br/>;en 图元名,endata 图元数据,tid 图元标志(若为TEXT则表示为单行文本),tt 文本,th文本高度<br/>;pt 文本基点,ang 文本旋转角度,ttlen 文本大致长度,tstr 相对坐标形式的多行文本的另一点</p><p>(defun c:dm(/ s1 i en tid tt th pt ang ttlen twid tang tlen tstr)</p><p> (setq sysvar (getvar "OSMODE")) ;获得并保存对象捕捉设置<br/> (setvar "OSMODE" 16384) ;关闭对象捕捉</p><p> (setq s1 (ssget '((0 . "TEXT") ))) ;选取单行文本,构造非空选择集<br/> (if (/= s1 nil) (print) <br/> (progn (setvar "OSMODE" sysvar) (exit) )<br/> )</p><p> (setq i -1)<br/> (repeat (sslength s1)<br/> (setq i (+ i 1))<br/> (setq en (ssname s1 i))<br/> (setq endata (entget en))<br/> (setq tid (cdr (assoc 0 endata))) ;判断是否单行文本<br/> (setq tt (cdr (assoc 1 endata))) ;取得文字<br/> (setq th (cdr (assoc 40 endata))) ;取得文字高度<br/> (setq pt (cdr (assoc 10 endata))) ;取得文字插入点<br/> (setq ang (cdr (assoc 50 endata))) ;取得文字旋转角度<br/> (setq ttlen (strlen tt)) ;取得文字长度<br/> (setq twid (* (* th 0.7) ttlen)) ;计算文字宽度<br/> (setq tang (/ (* 180 (+ ang (atan(/ th twid)))) pi)) ;计算多行文本对角点的旋转角度<br/> (setq tlen (sqrt (+ (* th th) (* twid twid)))) ;计算多行文本对角线的长度<br/> (setq tstr (strcat "@" (rtos tlen) "<" (rtos tang))) ;对角点的相对坐标<br/> (setq ang (/ (* ang 180) pi)) ;转换弧度为角度<br/> (command "-mtext" pt "h" th "r" ang tstr tt "") ;在原位置以原角度原高度生成多行文本<br/> (entdel en) ;删除单行文本 <br/> )</p><p> (setvar "OSMODE" sysvar) ;恢复对象捕捉设置<br/>)</p><p>------------------------------------------------------------------------------------------------</p> <p>顶!先下来再说!支持!</p><p>暂时不用,但是对于新手来说定有启发性。</p> <b>有没有多行文本改为单行文本的程序?</b> <p>谢谢楼主的分享,现在用不着,以后应该用得着!</p> <p>坦白说,不好用。</p><p></p> <p>回3楼,炸开就可以了</p><p>不需要程序呀</p> 本帖最后由 作者 于 2007-11-12 10:27:19 编辑 <br /><br /> <font face="宋体" size="2">我已经把该功能移植到<strong>4.3版仿R14特性工具</strong>中。</font><font face="宋体" color="#0000ff" size="2"><font face="宋体" color="#0000ff" size="2"><p><font color="#000000"><font face="宋体" size="2"><font face="Arial">4.3版添加双击启动编辑命令、点转标高、中心线、同心圆、<strong><font color="#ff0000">单行文本转多行文本</font></strong>等功能,<br/>并作了多处小改进:支持标注变量dimsoxd、添加对文字遮罩的支持等。</font></font><br/></font>详细内容:<a href="http://bbs.mjtd.com/forum.php?mod=viewthread&tid=61313">http://bbs.mjtd.com/forum.php?mod=viewthread&tid=61313</a></p><p><font color="#000000">我也试图开发这样个程序,用entmake的方法写了一大堆程序,由于无法有效控制对齐点只好作罢。<br/>你的程序简单实用我直接采纳。非常感谢!</font></p><p><font color="#000000">含第三方程序的文件</font>:</p></font></font> entmake我试了也不行为什么啊? 正在找,偏偏就有;急人所急,多多多谢。 下面这个不知道算不算:
页:
[1]
2