可能去了换行符没标识就不好搞了
我用了您提供的Drawing1.dwg 右邊的字符,用insufficient大的 把"\\P" 改成"\n"是沒問題的
(defun c:tt ()
(vl-load-com)
(setq ss (ssget'((0 . "MTEXT"))))
(setq slen (sslength ss))
(setq n 0)
(while (< n slen)
(setq ssn (ssname ss n))
(setq entdat (entget ssn))
(setq pt(cdr (assoc 10 entdat)) ;读取文字的插入点坐标
txt (cdr (assoc 1 entdat)) ;读取文字内容
zg(cdr (assoc 40 entdat))) ;读取文字的字高
(setq ftxt (substr txt 1 (vl-string-search "\n" txt))) ;第一行
(setq a1 (strlen ftxt))
(setq txt (substr txt (+ 3 a1)))
(setq gtxt (substr txt 1 (vl-string-search "\n" txt))) ;第二行
(setq a2 (strlen gtxt))
(setq txt (substr txt (+ 3 a2)))
(setq htxt (substr txt 1 (vl-string-search "\n" txt))) ;第二行
(setq result (strcat ftxt" " gtxt " " htxt)) ;合并前三行
(entmake (list '(0 . "TEXT") (cons 1 result) (cons 10 pt) (cons 40 zg))) ;创建单行文字
(entdel ssn) ;删除原多行文字
(setq n (+ 1 n))
)
(princ)
) bssurvey 发表于 2021-1-22 08:45
我用了您提供的Drawing1.dwg 右邊的字符,用insufficient大的 把"\\P" 改成"\n"是沒問題的
(def ...
明经现在上传不了,好麻烦呀
上传那个是没处理的,用那个代码处理后才是。没换行符, wgij007 发表于 2021-1-22 15:05
明经现在上传不了,好麻烦呀
上传那个是没处理的,用那个代码处理后才是。没换行符,
可以把檔案傳到百度網盤 或其他的網盤 bssurvey 发表于 2021-1-22 15:10
可以把檔案傳到百度網盤 或其他的網盤
麻烦你下一下了。
https://pan.baidu.com/s/1HexnYCK5r2znUcwW05LAyQ
提取码:yods
本帖最后由 lee50310 于 2021-1-26 12:25 编辑
執行前
utyh 258
1 Pli
447-8po
最2548 587 m2
執行後
utyh 258 1 Pli 447-8po 最2548 587 m2
*** 請執行下面的程式 就可以去掉多行文字的換行符號 ***
;;----------------------------------------------------------------------------------
(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" " ;空1格
)
(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)
)
;;----------------------------------------------------------------------------------
bssurvey 发表于 2021-1-18 14:12
請您測試一下
(defun c:tt ()
(vl-load-com)
谢谢你了,这是我想要的 bssurvey 发表于 2021-1-22 08:45
我用了您提供的Drawing1.dwg 右邊的字符,用insufficient大的 把"\\P" 改成"\n"是沒問題的
(def ...
现在才发现,第二行与第三行都删了第一个字符,怎么回事。 wgij007 发表于 2021-2-21 08:07
现在才发现,第二行与第三行都删了第一个字符,怎么回事。
(defun c:tt ()
(vl-load-com)
(setq ss (ssget'((0 . "MTEXT"))))
(setq slen (sslength ss))
(setq n 0)
(while (< n slen)
(setq ssn (ssname ss n))
(setq entdat (entget ssn))
(setq pt(cdr (assoc 10 entdat)) ;读取文字的插入点坐标
txt (cdr (assoc 1 entdat)) ;读取文字内容
zg(cdr (assoc 40 entdat))) ;读取文字的字高
(setq ftxt (substr txt 1 (vl-string-search "\n" txt))) ;第一行
(setq a1 (strlen ftxt))
(setq txt (substr txt (+ 2 a1))) ;這邊3改2
(setq gtxt (substr txt 1 (vl-string-search "\n" txt))) ;第二行
(setq a2 (strlen gtxt))
(setq txt (substr txt (+ 2 a2))) ;這邊3改2
(setq htxt (substr txt 1 (vl-string-search "\n" txt))) ;第二行
(setq result (strcat ftxt" " gtxt " " htxt)) ;合并前三行
(entmake (list '(0 . "TEXT") (cons 1 result) (cons 10 pt) (cons 40 zg))) ;创建单行文字
(entdel ssn) ;删除原多行文字
(setq n (+ 1 n))
)
(princ)
) bssurvey 发表于 2021-2-22 08:02
(defun c:tt () ...
谢谢了.帮了大忙了
页:
1
[2]