[求助]文字表格居中
<p>引自shlisp工具</p><p>当重复执行命令时,有时图纸会增加了一个表格,与原先的表格重叠<br/>谢谢解决,最好不要出现重叠的表格</p> 注册 发表于 2013-6-12 09:45能否实现多行文字表格居中?
运行了只支持单行文字~
单行文字才能选中~ 很实用,用起来和贱人工具箱5.8里那个一样 没看出“表格”是什么意思!! 程序不全,测试不了 本帖最后由 作者 于 2008-5-19 14:58:03 编辑 <br /><br /> caoyin发表于2008-5-19 11:01:00static/image/common/back.gif没看出“表格”是什么意思!!
<p>表格——例如由直线或多段线形成的封闭图形,执行该命令后,表格内的文字自动定位在表格的中心</p>以下是引用<font face="Verdana" color="#61b713">sailorcwx</font>的发言:<p>程序不全,测试不了</p>
命令JZ,试验正常 <p>(vl-load-com)<br/>(defun c:JZ(/ err)<br/>(defun algion (msg / ss lst i vlalst boxlst x<br/> cor1 cor2 findboxpt newboxpt en1<br/> en enlst y y2<br/> )<br/> (princ msg)<br/> (setq ss (ssget '((0 . "text"))))<br/> (setq lst nil)<br/> (setq i 0)<br/> (repeat (sslength ss)<br/> (setq lst (cons (ssname ss i) lst))<br/> (setq i (1+ i))<br/> )<br/> (setq vlalst (mapcar 'vlax-ename->vla-object lst))<br/> (setq boxlst (mapcar '(lambda (x / cor1 cor2)<br/> (vla-GetBoundingBox x 'cor1 'cor2)<br/> (list (vlax-safearray->list cor1)<br/> (vlax-safearray->list cor2)<br/> )<br/> )<br/> vlalst<br/> )<br/> )<br/> (setq<br/> findboxpt (mapcar '(lambda (x)<br/> (polar (car x)<br/> (angle (car x) (cadr x))<br/> (/ (DISTANCE (car x) (cadr x)) 2.0)<br/> )<br/> )<br/> boxlst<br/> )<br/> )<br/> (setq newboxpt (mapcar '(lambda (x)<br/> (setq en1 (entlast))<br/> (vl-cmdf "_boundary" x "")<br/> (setq en (entlast))<br/> (if (not (equal en1 en))<br/> (progn<br/> (setq enlst (entget en))<br/> (setq lst (vl-remove-if-not<br/> '(lambda (y) (= (car y) 10))<br/> enlst<br/> )<br/> )<br/> (setq cor1 (vl-remove 10 (car lst))<br/> cor2 (vl-remove 10 (nth 2 lst))<br/> )<br/><font color="#f70909"> (while (setq en1 (entnext en1))<br/> (entdel en1)<br/> )</font><br/> (polar cor1<br/> (angle cor1 cor2)<br/> (/ (DISTANCE cor1 cor2) 2.0)<br/> )<br/> )<br/> )<br/> )<br/> findboxpt<br/> )<br/> )<br/> (mapcar '(lambda (x y y2)<br/> (vla-move x (vlax-3d-point y) (vlax-3d-point y2))<br/> )<br/> vlalst<br/> findboxpt<br/> newboxpt<br/> )</p><p>)<br/>(setq err(VL-CATCH-ALL-APPLY 'algion (list "\n师兄 选择单行文字: ")))<br/> (princ)<br/> )</p><p></p> 本帖最后由 作者 于 2008-5-20 7:48:02 编辑 <br /><br /> caoyin发表于2008-5-19 16:57:00static/image/common/back.gif(vl-load-com)(defun c:JZ(/ err)(defun algion (msg / ss lst i  
<p>已创建 1 个多段线,还是没有成功,多次重复该命令,出现同样问题</p> <p>已创建 1 个多段线,还是没有成功,多次重复该命令,出现同样问题</p><p>我测试没有问题啊。</p><p>出现这个问题的原因是:在封闭区域存在孤岛的时候,BOUNDARY 产生的对象数量 >1,而你引用的原程序中只删除一个图元,</p><p><font color="#f70909">(while (setq en1 (entnext en1))<br/> (entdel en1)<br/>)</font></p><p>确保删除</p><p><font color="#3300ff">(setq en1 (entlast))</font><br/>(vl-cmdf "_boundary" x "")</p><p>....</p><p>之后的产生的所有图元</p> <p>现在问题依旧,简单举例:例如简单的一个矩形,里面有一个文字,</p><p>执行命令JZ,出现效果:文字位于矩形中心——正常;</p><p>重复执行命令JZ,出现效果:文字位置不变,矩形却变成重叠的2个——不正常</p><p>依次重复命令N次,出现效果:矩形变成重叠的N个——不正常</p><p>我想要达到的效果就是:无论重复命令JZ几次,矩形(表格)还是1个,不会出现重叠的矩形(表格)</p><p>谢谢</p> <p>按照你说的测试,仍然没问题,截图如下: </p> 朋友再这样试试,执行JZ命令后,直接空格再次重复命令JZ,而不是执行命令移动,我的2002版本就会出现重叠表格的现象