明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 784|回复: 5

[源码] MText Line Space 多行文字行间距修改

  [复制链接]
发表于 2024-4-8 07:56:51 | 显示全部楼层 |阅读模式
本帖最后由 fangmin723 于 2024-4-8 13:23 编辑

在CAD帮助中,对多行文字的行距有具体的介绍,介绍如下:

行距

指定多行文字对象的行距。行距是一行文字的底部(或基线)与下一行文字底部之间的垂直距离。


注: 用 MTEXT 创建表格时最好使用精确间距。请使用比指定的行距小的文字高度以保证文字不互相重叠。

  • 至少。根据行中最大字符的高度自动调整文字行。当选定“至少”时,包含更高字符的文字行会在行之间加大间距。

  • 距离。将行距设定为以图形单位测量的绝对值。有效值必须在 0.0833 (0.25x) 和 1.3333 (4x) 之间。

  • 精确。强制多行文字对象中所有文字行之间的行距相等。间距由对象的文字高度或文字样式决定。

  • 间距比例。将行距设定为单倍行距的倍数。

单倍行距是文字字符高度的 1.66 倍。可以以数字后跟 x 的形式输入行距比例,表示单倍行距的倍数。


例如,输入 1x 指定单倍行距,输入 2x 指定双倍行距。

上述文字中说,单倍行距是文字字符高度的 1.66 倍,即:文字高度是行距的0.6倍
  1. (progn;;;(MLS)MText Line Space 多行文字行间距修改 by 702099480@qq.com 2023.5.11
  2.   (defun c:mls(/ dxf44 edata ei ent n rdis si ss str);;CAD快捷命令MLS
  3.     (if (setq ss (ssget '((0 . "MTEXT"))))
  4.       (progn
  5.         (if (= nil (setq rdis (getreal "\n输入新行距【0.25~4.00】,默认<0.6>:"))) (setq rdis 0.6))
  6.         (if (< rdis 0.25) (setq rdis 0.25))
  7.         (if (> rdis 4.0) (setq rdis 4.0))
  8.         (setq n -1)
  9.         (while (setq ent (ssname ss (setq n (1+ n))))
  10.           (setq edata (entget ent) str (cdr (assoc 1 edata)))
  11.           ;;;(setq edata (entget (car (entsel))) str (cdr (assoc 1 edata)))
  12.           (if (wcmatch str "*\\psm#.##;*,*\\psm#.#;*,*\\psm#;*")
  13.             (progn
  14.               (setq si (1+ (vl-string-search "\\psm" str)))
  15.               (setq ei (1+ (vl-string-search ";" str (1+ si))))
  16.               ;;如果采用注释部分时修改行号后,在读取内容时会有乱码,暂不考虑
  17.               ;;(setq ow (substr str si (- ei si -1)))
  18.               ;;(setq nw (strcat "\\psm" (rtos rdis 2 2) ";"))
  19.               ;;(setq str (vl-string-subst nw ow str))
  20.               ;;(setq edata (subst (cons 1 str) (assoc 1 edata) edata))
  21.               (setq str (vl-string-subst "" (substr str si (- ei si -1)) str))
  22.               (setq edata (subst (cons 1 str) (assoc 1 edata) edata))
  23.             )
  24.           )
  25.           (if (setq dxf44 (assoc 44 edata))
  26.             (setq edata (subst (cons 44 rdis) dxf44 edata))
  27.             (setq edata (append edata (list (cons 44 rdis))))
  28.           )
  29.           (entmod edata)
  30.         )
  31.       )
  32.     )
  33.     (princ (strcat "共修改【" (rtos (sslength ss)) "】个多行文字!"))
  34.     (prin1)
  35.   )
  36.   (princ "\n多行文字行间距修改快捷命令 << MLS >>")
  37.   (prin1)
  38. )

本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 收起 理由
zhoupeng220 + 1 很给力!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2024-4-8 12:59:08 | 显示全部楼层
大神新作,感谢分享
发表于 2024-4-8 13:51:16 | 显示全部楼层
简洁、快速的修改多行文字,很方便,推!
发表于 2024-4-8 15:56:45 | 显示全部楼层
好东西。可以很高效。
发表于 2024-4-11 16:17:21 | 显示全部楼层
快速修改行距~
不错,学习了~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-9-28 01:28 , Processed in 0.185103 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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