找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 575|回复: 29

[求助] 如何统一修改cad表格中文字高度

[复制链接]
发表于 2021-8-13 23:50:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
如何用vba修改cad表格中的文字高度,一次性全部修改为统一高度。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 5295个

财富等级: 富甲天下

发表于 2021-8-15 16:44:04 | 显示全部楼层
学习、掌握VBA,然后去实现。我不懂VBA,LISP代码找到一个供你参考:
;;;修改文字内容
(defun C:ZX10 ( / #k1 %k2 %k3 %k4 %k5 %k6 %k7 &k1 &kw1 i)
(setvar "cmdecho" 0)
(setvar "blipmode" 0)
(princ "\n请选择文字")
(setq &kw1 (ssget ":S" (list (cons 0 "TEXT"))) %k2 t);选择文字
(if (/= &kw1 nil);如果有选择
  (progn
   (while %k2;循环修改
    (setq %k2 (ZX10~1));取得要修改的文字代码
    (if (/= %k2 nil);如果选择了
     (progn
      (setq %k3 (ZX10~2));那么取得要修改的内容
      (if (= %k3 nil) (setq %k2 nil) );如果没有取得内容就结束
     )
    )
    (if (/= %k3 nil);如果符合以上条件
     (progn
      (setq i 0 %k3 (cons 1 %k3));修改内容变为表里面的元素
      (repeat (sslength &kw1);对所有的文字进行查看
       (setq &k1 (ssname &kw1 i);取得一个对象
             #k1 (entget &k1);取得属性列表
             %k4 (assoc 1 #k1);取得内容元素
             %k6 (assoc 40 #k1);取得高度元素
             %k7 (cons 40 150);修改高度元素
             %k5 (cdr %k4);取得文字内容
       )
       (if (= %k2 %k5);如果文字内容符合
        (progn
         (setq #k1 (subst %k3 %k4 #k1));替换文字内容
         (setq #k1 (subst %k7 %k6 #k1));替换高度
         (entmod #k1);刷新文字
        )
       )
       (setq i (+ i 1));下一个
      )
     )
    )
   )
  )
)
(prin1)
)

;;子程序;;
(defun ZX10~1 ( / %k1 &kw2)
(setq %k1 nil)
(princ "\n请选择要修改的文字内容")
(setq &kw2 (ssget ":S" (list (cons 0 "TEXT"))))
(if (/= &kw2 nil)
  (progn
   (setq %k1 (cdr (assoc 1 (entget (ssname &kw2 0)))))
   (princ "\n选择文字为")
   (princ %k1)
  )
)
%k1
)
;;;子程序;;
(defun ZX10~2 ( / %k1 &kw2)
(setq %k1 nil)
(princ "\n请选择要替换的内容")
(setq &kw2 (ssget ":S" (list (cons 0 "TEXT"))))
(if (/= &kw2 nil)
  (progn
   (setq %k1 (cdr (assoc 1 (entget (ssname &kw2 0)))))
   (princ "\n修改内容为")
   (princ %k1)
  )
)
%k1
);内容复制到记事本,以【ZX10.lsp】命名,加载到autoLISP,命令:ZX10
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 4365个

财富等级: 富可敌国

发表于 2021-8-16 00:01:35 | 显示全部楼层
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

 楼主| 发表于 2021-8-16 02:28:03 | 显示全部楼层
本帖最后由 lingyv 于 2021-8-16 02:33 编辑
tzfcn 发表于 2021-8-15 16:44
学习、掌握VBA,然后去实现。我不懂VBA,LISP代码找到一个供你参考:
;;;修改文字内容
(defun C:ZX10 ( / ...

谢谢回复!不过我不是要修改text文字对象,是table表中的文字:就是先选择表,然后直接改整个表的文字高度为一个统一的高度。也不要一个个单元循环改,这个太慢了。表格内容多就卡死。用vba可以这样循环改:     For i = 0 To mytable.Rows - 1
         For j = 0 To mytable.Columns - 1
            Call mytable.SetCellTextHeight(i, j, 2.5)
         Next j
     Next i

内容多了就卡死了。平时手动操作,选择整个表后,直接在属性窗口中修改文字高度就可以完成,速度也很快……
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 5295个

财富等级: 富甲天下

发表于 2021-8-16 06:47:02 | 显示全部楼层
lingyv 发表于 2021-8-16 02:28
谢谢回复!不过我不是要修改text文字对象,是table表中的文字:就是先选择表,然后直接改整个表的文字高 ...

查找帮助里字的属性,其中有字高的属性,然后进行修改。
无论VBA还是LISP,道理是一样的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2230个

财富等级: 金玉满堂

发表于 2021-8-16 09:47:42 | 显示全部楼层
做个对论坛有益的人。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6475个

财富等级: 富甲天下

发表于 2021-8-17 00:06:11 | 显示全部楼层
謝謝樓上的大神學習了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 4365个

财富等级: 富可敌国

发表于 2021-8-17 00:07:22 | 显示全部楼层
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 3904个

财富等级: 富可敌国

发表于 2021-8-17 08:39:51 | 显示全部楼层
做一个热心并受欢迎的人!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2021-8-17 09:09:02 | 显示全部楼层
AcadTable.GetCellTextHeight/SetCellTextHeight
必须遍历每个单元格,每个单元格文字大小独立设置。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-4-27 00:46 , Processed in 0.374044 second(s), 48 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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