找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1088|回复: 9

[求助] 如何修改MTEXT的文字宽度比例系数?

[复制链接]

已领礼包: 10个

财富等级: 恭喜发财

发表于 2017-5-13 11:28:39 | 显示全部楼层 |阅读模式

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

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

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

已领礼包: 20个

财富等级: 恭喜发财

发表于 2017-5-13 12:16:26 | 显示全部楼层
MTEXT的文字宽度系数里面可以分开,多段的设置,用格式码:"{\\Wxxxx; ,所以修改这个宽度系数,整体都改的话
1、搜索已经有的宽度格式化的代码,去掉
2、增加新的 "{\\Wxxxx;


  1. (defun c:tt (/ elst ent i joindatosxp ss str)
  2.   (setq *datosxp* (cond
  3.                     ((getreal (strcat "\n输入MTEXT的文字宽度比例系数 <"
  4.                                       (rtos (setq *datosxp* (cond
  5.                                                               (*datosxp*)
  6.                                                               (0.75)
  7.                                                             )
  8.                                             )
  9.                                             2 2
  10.                                       ) ">: "
  11.                               )
  12.                      )
  13.                     )
  14.                     (*datosxp*)
  15.                   )
  16.   )
  17.   (setq joindatosxp (strcat "{\\W" (rtos *datosxp* 2 2) ";"))
  18.   (if (setq i -1
  19.             ss (ssget "_:L" '((0 . "MTEXT")))
  20.       )
  21.     (while (setq ent (ssname ss (setq i (1+ i))))
  22.       (setq str (cdr (assoc 1 (setq elst (entget ent)))))
  23.       (while (wcmatch str "{\\W*")
  24.         (setq str (vl-string-right-trim "}" (substr str (+ 2
  25.                                                            (vl-string-search ";" str)
  26.                                                         )
  27.                                             )
  28.                   )
  29.         )
  30.       )
  31.       (entmod (subst
  32.                 (cons 1 (strcat joindatosxp str "}"))
  33.                 (assoc 1 elst)
  34.                 elst
  35.               )
  36.       )
  37.     )
  38.   )
  39.   (princ)
  40. )


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

使用道具 举报

已领礼包: 769个

财富等级: 财运亨通

发表于 2017-5-13 13:12:10 | 显示全部楼层

大师,我就把您这段代码粘贴的cad里,然后加载这段代码,好像只能改部分段落!不能全改!
另外,您为什么不在自己的代码里留下自己的信息呀?
最后感谢大师的无私奉献!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2017-5-13 14:30:16 | 显示全部楼层
本帖最后由 marting 于 2017-5-13 14:31 编辑

谢谢建议,我贴的代码有些是自己码的,有些是以前的收集,时间都很长远,大都没出处了,所以我贴的代码就不写我自己的信息了,代码共享,谁写的无所谓。


-----------------------------------------------------------------------------------------------------------


2楼的代码仅仅对没有格式的MTEXT有效
修改了代码,用下面的,修改整体的文字宽度比例,不影响其它设置好的格式。


需要的函数


xd::string:regexps 见: http://bbs.xdcad.net/thread-669166-1-1.html
xd::string:regexpr 见: http://bbs.xdcad.net/thread-669167-1-1.html


或者加载晓东通用函数库就都有了。

  1. (defun c:tt (/ elst ent i joindatosxp ss str)
  2.   (setq *datosxp* (cond
  3.                     ((getreal (strcat "\n输入MTEXT的文字宽度比例系数 <"
  4.                                       (rtos (setq *datosxp* (cond
  5.                                                               (*datosxp*)
  6.                                                               (0.75)
  7.                                                             )
  8.                                             )
  9.                                             2 2
  10.                                       ) ">: "
  11.                               )
  12.                      )
  13.                     )
  14.                     (*datosxp*)
  15.                   )
  16.   )
  17.   (setq joindatosxp (strcat "\\W" (rtos *datosxp* 2 2) ";"))
  18.   (if (setq i -1
  19.             ss (ssget "_:L" '((0 . "MTEXT")))
  20.       )
  21.     (while (setq ent (ssname ss (setq i (1+ i))))
  22.       (setq str (cdr (assoc 1 (setq elst (entget ent)))))
  23.       (if (xd::string:regexps "\\\\W[0-9.]+;" str "")
  24.         (setq str (xd::string:regexpr "\\\\W[0-9.]+;" str "" ""))
  25.       )
  26.       (entmod (subst
  27.                 (cons 1 (if (xd::string:regexps "{\\\\(.*);" str "")
  28.                            (strcat "{" joindatosxp (substr str 2))
  29.                            (strcat "{" joindatosxp str "}"))
  30.                         )
  31.                 (assoc 1 elst)
  32.                 elst
  33.               )
  34.       )
  35.     )
  36.   )
  37.   (princ)
  38. )



修改MTEXT宽度比例系数.gif

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

使用道具 举报

已领礼包: 769个

财富等级: 财运亨通

发表于 2017-5-13 16:58:54 | 显示全部楼层

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

使用道具 举报

已领礼包: 10个

财富等级: 恭喜发财

 楼主| 发表于 2017-5-13 21:51:17 | 显示全部楼层

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

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

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

使用道具 举报

发表于 2021-8-13 23:13:17 | 显示全部楼层
一直以来,都直接在编辑器里面修改,有个宽度因子可以修改,选中谁就改谁的,还没试过用lisp干,学习下
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-21 11:37 , Processed in 0.214089 second(s), 52 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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