lee50310 发表于 2023-4-5 17:25:32

<<*** 批量多行文字刪除第一行轉單行文字 ***>>

本帖最后由 lee50310 于 2023-4-6 05:26 编辑

原請求帖:
http://bbs.mjtd.com/thread-187536-1-1.html
程式要求: (1)框選指定對象 (2)只處理 "TechnicExplain" 圖層 上的多行文字
               (3)刪除第一行。 (4)轉換成單行文字


執行指令:tt2
執行效果:如動態圖所示




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

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-

lee50310 发表于 2023-4-5 17:31:50

測試時請下載 原請求帖所提供的測試圖檔測試

aws 发表于 2023-4-5 17:39:03

点赞!!!

vlisp2012 发表于 2023-4-5 18:14:46

多谢分享!!!!

panliang9 发表于 2023-4-6 08:39:37

谢谢楼主分享!

paulpipi 发表于 2023-4-6 10:34:11

挺好的程序

cyh3210573 发表于 2023-4-6 11:44:52

谢谢分享,学习了

hzyhzjjzh 发表于 2023-4-6 12:34:36

{:1_1:}谢谢楼主分享!

bai2000 发表于 2023-4-6 18:36:41

很不错,但是不需要 “(3)刪除第一行“的功能,怎么改。最好图层点选,更通用一点

白色微風1991 发表于 2023-4-7 11:36:02

謝謝樓主分享!
页: [1] 2
查看完整版本: <<*** 批量多行文字刪除第一行轉單行文字 ***>>