明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1668|回复: 17

[源码] <<*** 批量多行文字刪除第一行轉單行文字 ***>>

  [复制链接]
发表于 2023-4-5 17:25 | 显示全部楼层 |阅读模式
本帖最后由 lee50310 于 2023-4-6 05:26 编辑

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


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




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 1金钱 +5 收起 理由
aws + 5 赞一个!

查看全部评分

"觉得好,就打赏"
    共1人打赏
 楼主| 发表于 2023-4-7 12:53 | 显示全部楼层
本帖最后由 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")) ))  ;過濾多行文字及圖層


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

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

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

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

 楼主| 发表于 2023-10-17 16:31 | 显示全部楼层
本帖最后由 lee50310 于 2023-10-18 15:58 编辑
hhjjwww 发表于 2023-10-17 06:58
这个正需要,谢了。另外,有办法指定删除特定行吗,例如3行里的第二行?

[程式:多行文字轉單行文字並刪除指定的行 ]
執行指令:tt
            1.選擇一個多行文字:
            2.輸入要刪除第幾行:

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2023-10-17 22:56 | 显示全部楼层
lee50310 发表于 2023-10-17 16:31
[程式:多行文字轉單行文字並刪除指定的行 ]
執行指令:tt
            1.選擇一個多行文字:

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2023-4-5 17:31 | 显示全部楼层
測試時  請下載 原請求帖所提供的測試圖檔測試

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2023-4-6 08:39 | 显示全部楼层
谢谢楼主分享!
发表于 2023-4-6 10:34 来自手机 | 显示全部楼层
挺好的程序
发表于 2023-4-6 11:44 | 显示全部楼层
谢谢分享,学习了
发表于 2023-4-6 12:34 | 显示全部楼层
谢谢楼主分享!
发表于 2023-4-6 18:36 | 显示全部楼层
很不错,但是不需要 “(3)刪除第一行“的功能,怎么改。最好图层点选,更通用一点
发表于 2023-4-7 11:36 | 显示全部楼层
謝謝樓主分享!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-10 18:26 , Processed in 0.182991 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表