wgij007
发表于 2021-1-18 14:04:32
顶一下
wgij007
发表于 2021-1-19 08:20:32
没为法吗
wgij007
发表于 2021-1-25 21:17:40
带点希望的顶一下
wgij007
发表于 2021-3-1 17:50:49
再顶一下
vitalgg
发表于 2021-3-1 19:10:54
本帖最后由 vitalgg 于 2021-3-1 19:45 编辑
一定要注意程序中说明的条件。下面这是有多个空格且有自定义格式的字串样例,需要分析这个;到} 之间都是空格或<TAB>之类的无显示字串。
{\fVerdana|b0|i0|c0|p34;}
(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 ();;"去多行文本最后一行的空格(只有一个空格,多了还得改,还有最后的空格不能有自己样式。就是一个纯空格)"
(setq en0 (car (entsel)))
(setq strlst (string:to-lst (cdr (assoc 1 (entget en0))) "\\P"))
(if (= " " (last strlst))
(entmod
(subst
(cons 1 (string:from-lst (reverse (cdr (reverse strlst))) "\\P"))
(assoc 1 (entget en0)) (entget en0)))))
(defun c:tt () (remove-mtext-lastspace))
ninja37
发表于 2021-3-2 18:00:45
顶一下
wgij007
发表于 2021-3-4 17:50:13
vitalgg 发表于 2021-3-1 19:10
一定要注意程序中说明的条件。下面这是有多个空格且有自定义格式的字串样例,需要分析这个;到} 之间都是空 ...
不行,没作用
vitalgg
发表于 2021-3-4 18:05:35
wgij007 发表于 2021-3-4 17:50
不行,没作用
http://atlisp.cn/static/del-last-space.gif
运行条件不一样。
wgij007
发表于 2021-3-5 08:33:30
vitalgg 发表于 2021-3-4 18:05
运行条件不一样。
我用的是06版的,是不是这个问题呀
lee50310
发表于 2021-3-5 13:05:36
本帖最后由 lee50310 于 2021-3-11 20:38 编辑
試試這個程式
(defun c:tt ()
(vl-load-com)
(setq ss(ssget'((0 . "MTEXT"))))
(repeat (setq i (sslength ss))
(setq ssn (ssname ss (setq i(1- i)))
entdat (entget ssn)
txt(cdr (assoc 1 entdat)) ;讀取文字內容
txt2txt
old_t "\\P"
new_t " "
)
(while (vl-string-search "\\P" txt) ;判斷是否還有換行符號
(setq txt(vl-string-subst new_t old_t txt)) ;去掉字串內的換行符號
)
(setq new_txt( cons 1 txt))
(setq old_txt( cons 1 txt2))
(setq entdat (subst new_txt old_txt entdat)) ;更新資料串列
(entmod entdat) ;更新螢幕上的元體
)
(princ)
)