找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: lanyf

[求助] 如何用lisp改变cad里面的表格的文字样式

[复制链接]

已领礼包: 1个

财富等级: 恭喜发财

 楼主| 发表于 2017-7-12 13:32:56 | 显示全部楼层

不好意思,前面代码放到附件里面了

(defun C:tt (/ cellheight clms col def_cellheight_list def_clms def_height_list def_width_list e height row rows sub_col tableobj width);设置明细栏的宽度
  (Vl-Load-Com)
  (setq def_clms 8);默认总列数为8
  ;(setq def_width_list (list 7.5 7.5 33 8 36 46 16 26));A4列宽度列表
  (setq def_width_list (list 7.5 7.5 33 8 45 47 17 33));A3~A0列宽度列表
  (setq def_height_list (list 6))
  (setq def_cellheight_list (list 3.5))

(if (setq e (ssget ":E:N" '((0 . "ACAD_TABLE"))))
    (setq tableobj (vlax-ename->vla-object (ssname e 0)) )
  )
(Vlax-Put-Property  tableobj 'VertCellMargin 0 );表格上下边距调为0
;设置文字样式
;(setq textstyle "table_sty")
;(command "-STYLE" textstyle "isocp.shx" def_cellheight_list 0.8 0 "N" "N"   )

(vla-SetTextStyle tableobj (+ acDataRow acTitleRow) "table_sty")


  (setq clms (vla-get-columns tableobj))
  (setq col 0)
(repeat clms
  (setq width (nth col def_width_list))
  (vla-SetColumnWidth tableobj col width)
  (setq col (1+ col))
)

  (setq rows (vla-get-rows tableobj))
  (setq row 0)
(repeat rows
  (setq height (nth 0 def_height_list))
  (vla-SetRowHeight tableobj row height)
  (setq cellheight (nth 0 def_cellheight_list))
  (setq sub_col 0)
  ;每行时,对每列的单元格文字高度进行设置
  (repeat clms
   (vla-setcelltextheight tableobj row sub_col cellheight);设置单元格的文字高度
   (cond
    ((or  (= sub_col 2) (= sub_col 7));
     (vla-SetCellAlignment tableobj row sub_col acMiddleLeft);
    )
    ((= sub_col 2);
     (vla-SetCellAlignment tableobj row sub_col acMiddleRight);
    )
    ( T;
     (vla-SetCellAlignment tableobj row sub_col acMiddleCenter);
    )
   )
   (setq sub_col (1+ sub_col))
  )
  (setq row (1+ row))
)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-7-12 13:51:20 | 显示全部楼层

那你就在循环里面,每个单元格,用上面说的,设置具体单元格的样式就行了

  1. (defun C:tt (/
  2.             )                                ;设置明细栏的宽度
  3.   (Vl-Load-Com)
  4.   (setq def_clms 8)                        ;默认总列数为8
  5.                                         ;(setq def_width_list (list 7.5 7.5 33 8 36 46 16 26));A4列宽度列表
  6.   (setq def_width_list (list 7.5 7.5 33 8 45 47 17 33))
  7.                                         ;A3~A0列宽度列表
  8.   (setq def_height_list (list 6))
  9.   (setq def_cellheight_list (list 3.5))

  10.   (if (setq e (ssget ":E:N" '((0 . "ACAD_TABLE"))))
  11.     (setq tableobj (vlax-ename->vla-object (ssname e 0)))
  12.   )
  13.   (Vlax-Put-Property tableobj 'VertCellMargin 0) ;表格上下边距调为0
  14.                                         ;设置文字样式
  15.                                         ;(setq textstyle "table_sty")
  16.                                         ;(command "-STYLE" textstyle "isocp.shx" def_cellheight_list 0.8 0 "N" "N"   )

  17.   (setq clms (vla-get-columns tableobj))
  18.   (setq col 0)
  19.   (repeat clms
  20.     (setq width (nth col def_width_list))
  21.     (vla-SetColumnWidth tableobj col width)
  22.     (setq col (1+ col))
  23.   )

  24.   (setq rows (vla-get-rows tableobj))
  25.   (setq row 0)
  26.   (repeat rows
  27.     (setq height (nth 0 def_height_list))
  28.     (vla-SetRowHeight tableobj row height)
  29.     (setq cellheight (nth 0 def_cellheight_list))
  30.     (setq sub_col 0)
  31.                                         ;每行时,对每列的单元格文字高度进行设置
  32.     (repeat clms
  33.       (vla-setcelltextheight tableobj row sub_col cellheight)
  34.                                         ;设置单元格的文字高度
  35.       (cond
  36.         ((or (= sub_col 2) (= sub_col 7)) ;
  37.          (vla-SetCellAlignment tableobj row sub_col acMiddleLeft) ;
  38.         )
  39.         ((= sub_col 2)                        ;
  40.          (vla-SetCellAlignment tableobj row sub_col acMiddleRight) ;
  41.         )
  42.         (T                                ;
  43.          (vla-SetCellAlignment tableobj row sub_col acMiddleCenter) ;
  44.         )
  45.       )
  46.       (vlax-invoke
  47.         tableobj 'setcelltextstyle row sub_col "table_sty")
  48.       (setq sub_col (1+ sub_col))
  49.     )
  50.     (setq row (1+ row))
  51.   )
  52.   (princ)
  53. )


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

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

 楼主| 发表于 2017-7-12 14:21:16 | 显示全部楼层

我移到每个单元格的循环里面,字体还是和excel里面的字体一致,没有改变,其他的文字样式改变了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-7-12 14:27:47 | 显示全部楼层

上面和你说了,你不能修改的,是因为文字是MTEXT,被单独设置文字样式了。你读出来重新写,或者去掉MTEXT的格式。

点评

请问怎么去掉MTEXT格式呢?  详情 回复 发表于 2018-4-30 17:09
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6468个

财富等级: 富甲天下

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

使用道具 举报

发表于 2018-4-30 17:09:36 | 显示全部楼层
newer 发表于 2017-7-12 14:27
上面和你说了,你不能修改的,是因为文字是MTEXT,被单独设置文字样式了。你读出来重新写,或者去掉MTEXT ...

请问怎么去掉MTEXT格式呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2018-4-30 18:07:23 | 显示全部楼层
edrise 发表于 2018-4-30 17:09
请问怎么去掉MTEXT格式呢?

搜索下论坛就有了


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

使用道具 举报

已领礼包: 244个

财富等级: 日进斗金

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-25 14:10 , Processed in 0.368914 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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