lee50310 发表于 2023-4-7 12:53:15

本帖最后由 lee50310 于 2023-4-7 13:00 编辑

bai2000 发表于 2023-4-6 18:36
很不错,但是不需要 “(3)刪除第一行“的功能,怎么改。最好图层点选,更通用一点

            (princ "\n批量選擇要轉換的多行文字 : ")               
            (setq ss(ssget (list (cons 0 "MTEXT") (cons 8 "TechnicExplain")) ));過濾多行文字及圖層


指定圖層 可修改程式中 (cons 8 "TechnicExplain") 將 "TechnicExplain"圖層名 改成你要的圖層名 例: "temp"

         (princ "\n批量選擇要轉換的多行文字 : ")               
            (setq ss(ssget (list (cons 0 "MTEXT") (cons 8 "temp")) ));過濾多行文字及圖層


刪除第一行是原主的要求
若不要刪除第一行那 只剩 多行文字轉 單行文字
只需將程式中 此處修改成下面樣式即可

(if (eq (vla-get-objectname obj) "AcDbMText")
      (progn

;|-------此段以下當作註解*****
      (setq b1(rh:regexp "\\\\" (vla-get-TextString obj) "")) ;取出文字串 例: b1="底板\tA05 底板: 1300x480x16=1"
    (setq tn (strlen b1))                                    ;字串長度
      (if (setq k(vl-string-position (ascii "\t") b1 0 T) )      ;換行符號 "/t" ,vl-string-position ==> 字串字數從0開始數到 換行符號 "\t" 的長度
      (setq b2(substr b1 (+ k 2) tn))                        ;刪除文字串第一行 "底板" , b2= "A05 底板: 1300x480x16=1"
      (setq b2 b1)                                           ;沒有找到回原字串
         );end_if
   
      (vla-put-TextString obj b2)                              ;更新文字串
|; -------此段以上當作註解******

      (vl-cmdf "explode" ent )                                 ;分解成單行文字
    (setq data(entget (entlast)))
    (setq op_ip(assoc 10 data))
    (setq data(subst np_ip op_ip data))                     ;換插入點為左下點
    (entmod data)
   
      );end_progn
      (alert "不是多行文字實體")
    );end_if

菜鸟初来乍到 发表于 2023-4-8 07:11:05

坚持每天回复贴子

lvanhui111 发表于 2023-4-9 13:50:28

多谢分享!!

Noangler 发表于 2023-5-31 08:45:03

謝謝樓主分享!

hhjjwww 发表于 2023-10-17 06:58:25

这个正需要,谢了。另外,有办法指定删除特定行吗,例如3行里的第二行?

lee50310 发表于 2023-10-17 16:31:42

本帖最后由 lee50310 于 2023-10-18 15:58 编辑

hhjjwww 发表于 2023-10-17 06:58
这个正需要,谢了。另外,有办法指定删除特定行吗,例如3行里的第二行?
[程式:多行文字轉單行文字並刪除指定的行 ]
執行指令:tt
            1.選擇一個多行文字:
            2.輸入要刪除第幾行:

修正版 ttb2_chs.lspttb2_cht.lsp==> 修正dxf 錯誤   日期:版ˋ2023/10/18

hhjjwww 发表于 2023-10-17 22:56:38

lee50310 发表于 2023-10-17 16:31
[程式:多行文字轉單行文字並刪除指定的行 ]
執行指令:tt
            1.選擇一個多行文字:


不错,可以用,准备后边想个办法能批量操作多个多行文字,谢谢!:D-

Dallas_whu 发表于 2023-10-17 23:18:23

謝謝樓主分享!

advksf 发表于 2024-8-30 00:18:17

好资料,谢谢分享
页: 1 [2]
查看完整版本: <<*** 批量多行文字刪除第一行轉單行文字 ***>>