明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5391|回复: 25

[求助]文字表格居中

  [复制链接]
发表于 2008-5-19 10:45 | 显示全部楼层 |阅读模式

引自shlisp工具

当重复执行命令时,有时图纸会增加了一个表格,与原先的表格重叠
谢谢解决,最好不要出现重叠的表格

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2024-4-15 11:01 | 显示全部楼层
注册 发表于 2013-6-12 09:45
能否实现多行文字表格居中?

运行了只支持单行文字~
单行文字才能选中~
发表于 2020-6-9 10:04 | 显示全部楼层
很实用,用起来和贱人工具箱5.8里那个一样
发表于 2008-5-19 11:01 | 显示全部楼层
没看出“表格”是什么意思!!
发表于 2008-5-19 12:11 | 显示全部楼层
程序不全,测试不了
 楼主| 发表于 2008-5-19 14:54 | 显示全部楼层
本帖最后由 作者 于 2008-5-19 14:58:03 编辑

caoyin发表于2008-5-19 11:01:00没看出“表格”是什么意思!!

表格——例如由直线或多段线形成的封闭图形,执行该命令后,表格内的文字自动定位在表格的中心

以下是引用sailorcwx的发言:

程序不全,测试不了

命令JZ,试验正常
发表于 2008-5-19 16:57 | 显示全部楼层

(vl-load-com)
(defun c:JZ(/ err)
(defun algion (msg /       ss      lst     i       vlalst  boxlst  x
           cor1    cor2    findboxpt       newboxpt           en1
           en      enlst   y       y2
          )
  (princ msg)
  (setq ss (ssget '((0 . "text"))))
  (setq lst nil)
  (setq i 0)
  (repeat (sslength ss)
    (setq lst (cons (ssname ss i) lst))
    (setq i (1+ i))
  )
  (setq vlalst (mapcar 'vlax-ename->vla-object lst))
  (setq    boxlst (mapcar '(lambda    (x / cor1 cor2)
              (vla-GetBoundingBox x 'cor1 'cor2)
              (list    (vlax-safearray->list cor1)
                (vlax-safearray->list cor2)
              )
            )
               vlalst
           )
  )
  (setq
    findboxpt (mapcar '(lambda (x)
             (polar    (car x)
                (angle (car x) (cadr x))
                (/ (DISTANCE (car x) (cadr x)) 2.0)
             )
               )
              boxlst
          )
  )
  (setq    newboxpt (mapcar '(lambda (x)
                (setq en1 (entlast))
                (vl-cmdf "_boundary" x "")
                (setq en (entlast))
                (if    (not (equal en1 en))
                  (progn
                (setq enlst (entget en))
                (setq lst (vl-remove-if-not
                        '(lambda (y) (= (car y) 10))
                        enlst
                      )
                )
                (setq cor1 (vl-remove 10 (car lst))
                      cor2 (vl-remove 10 (nth 2 lst))
                )
                (while (setq en1 (entnext en1))
                  (entdel en1)
                )

                (polar cor1
                       (angle cor1 cor2)
                       (/ (DISTANCE cor1 cor2) 2.0)
                )
                  )
                )
              )
             findboxpt
         )
  )
  (mapcar '(lambda (x y y2)
         (vla-move x (vlax-3d-point y) (vlax-3d-point y2))
       )
      vlalst
      findboxpt
      newboxpt
  )

)
(setq err(VL-CATCH-ALL-APPLY 'algion (list "\n师兄 选择单行文字: ")))
  (princ)
  )

 楼主| 发表于 2008-5-19 22:35 | 显示全部楼层
本帖最后由 作者 于 2008-5-20 7:48:02 编辑

caoyin发表于2008-5-19 16:57:00(vl-load-com)(defun c:JZ(/ err)(defun algion (msg /       ss      lst     i     

已创建 1 个多段线,还是没有成功,多次重复该命令,出现同样问题

发表于 2008-5-20 08:55 | 显示全部楼层

已创建 1 个多段线,还是没有成功,多次重复该命令,出现同样问题

我测试没有问题啊。

出现这个问题的原因是:在封闭区域存在孤岛的时候,BOUNDARY 产生的对象数量 >1,而你引用的原程序中只删除一个图元,

(while (setq en1 (entnext en1))
   (entdel en1)
)

确保删除

(setq en1 (entlast))
(vl-cmdf "_boundary" x "")

....

之后的产生的所有图元

 楼主| 发表于 2008-5-20 11:04 | 显示全部楼层

现在问题依旧,简单举例:例如简单的一个矩形,里面有一个文字,

执行命令JZ,出现效果:文字位于矩形中心——正常;

重复执行命令JZ,出现效果:文字位置不变,矩形却变成重叠的2个——不正常

依次重复命令N次,出现效果:矩形变成重叠的N个——不正常

我想要达到的效果就是:无论重复命令JZ几次,矩形(表格)还是1个,不会出现重叠的矩形(表格)

谢谢

发表于 2008-5-20 11:48 | 显示全部楼层

按照你说的测试,仍然没问题,截图如下: 

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2008-5-20 15:59 | 显示全部楼层
朋友再这样试试,执行JZ命令后,直接空格再次重复命令JZ,而不是执行命令移动,我的2002版本就会出现重叠表格的现象
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-3 09:02 , Processed in 0.614574 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表