本帖最后由 vitalgg 于 2021-3-6 10:48 编辑
自己试一下吧,因为 2016 会直接把最后那个空行删除了。(至少我这里是这样的)
 - (defun string:from-lst(lst Separator) "列表转成字符串"
- (if (cdr lst)
- (strcat (car lst) Separator (string:from-lst (cdr lst) Separator))
- (car lst)))
- (defun string:to-lst (str Separator / pos)
- "字符串转成列表"
- (if (setq pos (vl-string-search Separator str))
- (cons (substr str 1 pos)
- (string:to-lst (substr str (+ pos 1 (strlen Separator))) Separator))
- (list str)))
- (defun remove-mtext-lastspace (en0) ;;"去多行文本最后一行的空格(只有一个空格,多了还得改,还有最后的空格不能有自己样式。就是一个纯空格)"
- (setq strlst (string:to-lst (cdr (assoc 1 (entget en0))) "\\n"))
- (if (or (= " " (last strlst))
- (= "" (last strlst)))
- (progn
- (entmod
- (subst
- (cons 1 (string:from-lst (reverse (cdr (reverse strlst))) "\\n"))
- (assoc 1 (entget en0)) (entget en0)))
- (entupd en0)
- )
- ))
- (defun c:tt (/ i% ss-mtext)
- (setq ss-mtext (ssget '((0 . "MTEXT"))))
- (setq i% 0)
- (while (< i% (sslength ss-mtext))
- (remove-mtext-lastspace (ssname ss-mtext i%))
- (setq i% (1+ i%))))
|