MText Line Space 多行文字行间距修改
本帖最后由 fangmin723 于 2024-4-8 13:23 编辑在CAD帮助中,对多行文字的行距有具体的介绍,介绍如下:
行距
指定多行文字对象的行距。行距是一行文字的底部(或基线)与下一行文字底部之间的垂直距离。
注: 用 MTEXT 创建表格时最好使用精确间距。请使用比指定的行距小的文字高度以保证文字不互相重叠。
[*]至少。根据行中最大字符的高度自动调整文字行。当选定“至少”时,包含更高字符的文字行会在行之间加大间距。
[*]距离。将行距设定为以图形单位测量的绝对值。有效值必须在 0.0833 (0.25x) 和 1.3333 (4x) 之间。
[*]精确。强制多行文字对象中所有文字行之间的行距相等。间距由对象的文字高度或文字样式决定。
[*]间距比例。将行距设定为单倍行距的倍数。
单倍行距是文字字符高度的 1.66 倍。可以以数字后跟 x 的形式输入行距比例,表示单倍行距的倍数。
例如,输入 1x 指定单倍行距,输入 2x 指定双倍行距。
上述文字中说,单倍行距是文字字符高度的 1.66 倍,即:文字高度是行距的0.6倍
(progn;;;(MLS)MText Line Space 多行文字行间距修改 by 702099480@qq.com 2023.5.11
(defun c:mls(/ dxf44 edata ei ent n rdis si ss str);;CAD快捷命令MLS
(if (setq ss (ssget '((0 . "MTEXT"))))
(progn
(if (= nil (setq rdis (getreal "\n输入新行距【0.25~4.00】,默认<0.6>:"))) (setq rdis 0.6))
(if (< rdis 0.25) (setq rdis 0.25))
(if (> rdis 4.0) (setq rdis 4.0))
(setq n -1)
(while (setq ent (ssname ss (setq n (1+ n))))
(setq edata (entget ent) str (cdr (assoc 1 edata)))
;;;(setq edata (entget (car (entsel))) str (cdr (assoc 1 edata)))
(if (wcmatch str "*\\psm#.##;*,*\\psm#.#;*,*\\psm#;*")
(progn
(setq si (1+ (vl-string-search "\\psm" str)))
(setq ei (1+ (vl-string-search ";" str (1+ si))))
;;如果采用注释部分时修改行号后,在读取内容时会有乱码,暂不考虑
;;(setq ow (substr str si (- ei si -1)))
;;(setq nw (strcat "\\psm" (rtos rdis 2 2) ";"))
;;(setq str (vl-string-subst nw ow str))
;;(setq edata (subst (cons 1 str) (assoc 1 edata) edata))
(setq str (vl-string-subst "" (substr str si (- ei si -1)) str))
(setq edata (subst (cons 1 str) (assoc 1 edata) edata))
)
)
(if (setq dxf44 (assoc 44 edata))
(setq edata (subst (cons 44 rdis) dxf44 edata))
(setq edata (append edata (list (cons 44 rdis))))
)
(entmod edata)
)
)
)
(princ (strcat "共修改【" (rtos (sslength ss)) "】个多行文字!"))
(prin1)
)
(princ "\n多行文字行间距修改快捷命令 << MLS >>")
(prin1)
)
期待更新!!! 大神新作,感谢分享 简洁、快速的修改多行文字,很方便,推! 好东西。可以很高效。 快速修改行距~
不错,学习了~
页:
[1]