admin1 发表于 2024-4-8 21:27:01

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

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

行距

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


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

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

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

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

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

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


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

上述文字中说,单倍行距是文字字符高度的 1.66 倍,即:文字高度是行距的0.6倍


(progn;;;(MLS)MText Line Space 多行文字行间距修改 by <a href="mailto:702099480@qq.com" target="_blank">702099480@qq.com</a> 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]
查看完整版本: [源码] MText Line Space 多行文字行间距修改