jcmtxgt 发表于 2024-11-3 23:13:38

批量删除某一关键字前面的文字

本帖最后由 jcmtxgt 于 2024-11-5 15:09 编辑

图档的编号比较多,有时要删除某一些文字的前面部分,请高手帮忙,编一个,可以输入任意关键字,将该关键字前面的内容全部删除。,比如图片上面的,批量将“J'前面的文字删除,后面的要保留。
执行命令,输入关键字,框选要操作的文字,确定,删除。




韩飞翔 发表于 2024-11-3 23:13:39

本帖最后由 韩飞翔 于 2024-11-5 17:50 编辑

试试这个,是不是想要的

ssyfeng 发表于 2024-11-4 12:18:02

没说明白,大侠们没兴趣猜
是多行文字还是单行,前面和后面字符串是分开文字还是一个文字,都没有说清
或者你直接上传dwg文件最直接

jcmtxgt 发表于 2024-11-4 22:41:00

表述得不够详细。是单行文字来的,每一行就是一个图档的编号,图片上是六个编号。每一行的前面和后面字符串是一起的。需要利用这六个编号的相同关键字,删除每一个编号的前面部分

xiang19751218 发表于 2024-11-5 09:42:01

试一下:

jcmtxgt 发表于 2024-11-5 14:43:49

多谢你的帮忙,请再改一下。要实现这样的操作:1.执行命令,可以输入任意关键字,比如我上面图片上的“j",就把前面部分删除了,后面部分要保留。2,框选中所有单行文字,程序会删除关键字前面的文字

xiang19751218 发表于 2024-11-5 17:23:58

只针对图片的文本样式,再试一试。
(defun c:t2 ( / wb ss n eName obj nr)
(vl-load-com)
   (setq wb (getstring "\n输入关键字:"))
    (setq ss (ssget(list '(0 . "TEXT")(cons 1(strcat "*" wb "*")) ) ))
       (if SS
             (repeat (setq n (sslength ss))
            (setq ename (ssname ss (setq n (1- n))))
            (setq obj (vlax-ename->vla-object ename))
            (setq nr (vlax-get obj 'textstring))
            ;(setq nr(NBTF_RegExP"(?=JR)JR+" nr "g"))
               (setq nr(NBTF_RegExP(strcat "(?=" wb ")" wb "* ** ** *[\\u4e00-\\u9fa5]*" ) nr "g"))
            (vlax-put obj 'textstring (car nr))
             )

       );if
(princ)
)

韩飞翔 发表于 2024-11-5 17:53:29

看7#回答,是否是需要的

jcmtxgt 发表于 2024-11-5 18:50:05

本帖最后由 jcmtxgt 于 2024-11-5 19:32 编辑

韩飞翔 发表于 2024-11-5 17:26
试试这个,是不是想要的正是所要,测试了多次,感谢帮忙


jcmtxgt 发表于 2024-11-5 18:52:32

xiang19751218 发表于 2024-11-5 17:23
只针对图片的文本样式,再试一试。
(defun c:t2 ( / wb ss n eName obj nr)
(vl-load-com)


执行的时候没有反应,选不到字
页: [1] 2
查看完整版本: 批量删除某一关键字前面的文字