tryhi 发表于 2020-3-9 17:51:53

(defun c:tt (/ dat en i lst str str1 x x0 x1)
        (setq lst '("DN*""dn*""De*""Dw*""D*"))       
        (while (setq en(car(entsel "\n请选择对象:")))
                (setq dat(entget en)
                        str1(assoc 1 dat)
                        str(cdr str1)
                        i -1
                )
                (if(vl-some '(lambda(x)(setq i(1+ i))(wcmatch str x))lst)
                        (progn
                                (setq
                                        x0(substr(nth i lst)1(1-(strlen (nth i lst))))
                                        i(if(= (1+ i) (length lst))0(1+ i))
                                        x(substr(nth i lst)1(1-(strlen (nth i lst))))
                                        x1(substr str (1+(strlen x0)))
                                )
                                (entmod(subst (cons 1(strcat x x1))str1 dat))
                        )
                )
        )
)

magicheno 发表于 2020-3-9 18:56:40

tryhi 发表于 2020-3-9 17:51
(defun c:tt (/ dat en i lst str str1 x x0 x1)
        (setq lst '("DN*""dn*""De*""Dw*""D*"))       
        (w ...

感谢感谢大神,这个可以的很好用的

magicheno 发表于 2020-3-15 00:05:44

tryhi 发表于 2020-3-9 17:51
(defun c:tt (/ dat en i lst str str1 x x0 x1)
      (setq lst '("DN*""dn*""De*""Dw*""D*"))      
      (w ...大侠,我想中间想加一组"JS*""JZ*""JG*",需要用什么来隔断下呢
(defun c:TT7 (/ dat en i lst str str1 x x0 x1)
      (setq lst '( "DN*""dn*""De*" "JS*""JZ*""JG*" ))      
      (while (setq en(car(entsel "\n请选择对象:")))
                (setq dat(entget en)
                        str1(assoc 1 dat)
                        str(cdr str1)
                        i -1
                )
                (if(vl-some '(lambda(x)(setq i(1+ i))(wcmatch str x))lst)
                        (progn
                              (setq
                                        x0(substr(nth i lst)1(1-(strlen (nth i lst))))
                                        i(if(= (1+ i) (length lst))0(1+ i))
                                        x(substr(nth i lst)1(1-(strlen (nth i lst))))
                                        x1(substr str (1+(strlen x0)))
                              )
                              (entmod(subst (cons 1(strcat x x1))str1 dat))
                        )
                )
      )
)

cq4920 发表于 2020-3-15 00:15:30

magicheno 发表于 2020-3-15 00:05
大侠,我想中间想加一组"JS*""JZ*""JG*",需要用什么来隔断下呢
(defun c:TT7 (/ dat en i lst str st ...

你完全可以去搜索一下批量替换前缀后缀来实现啊!!直接先删掉原有的前缀字符,然后加上你想要的任意字符就可以了!论坛里就有!

magicheno 发表于 2020-3-15 00:22:59

cq4920 发表于 2020-3-15 00:15
你完全可以去搜索一下批量替换前缀后缀来实现啊!!直接先删掉原有的前缀字符,然后加上你想要的任意字符 ...

替换的功能我知道的呢,很多的,软件自带的也有的,就是我的想法会提高下效率吧,因为有时候就改一两个前缀,用替换的话,很拖节奏的,如果是大批量修改的话,那肯定是用查找替换或其他的

cq4920 发表于 2020-3-15 00:25:26

magicheno 发表于 2020-3-15 00:22
替换的功能我知道的呢,很多的,软件自带的也有的,就是我的想法会提高下效率吧,因为有时候就改一两个前 ...

不是查找替换!是选择需要替换的文本;;-前缀---
(defun c:gb(/ en en_data e older new)
(setvar "cmdecho" 0)
(SETQ BASE (GETstring "输入前缀:"))
(setq en (ssget))
(setq n 0)
(while (setq enn (ssname en n))
      (setq en_data (entget enn))
   (setq old_name_list(assoc 1 en_data))
   (setq old_nn (cdr old_name_list))
   (setq new_rr (strcat base old_nn))
   (setq new_name_list(cons 1 new_rr))
   (setq en_data (subst new_name_list old_name_list en_data))
   (entmod en_data)
   (setq n (1+ n))
)
(prin1)
)

magicheno 发表于 2020-3-15 00:42:19

cq4920 发表于 2020-3-15 00:25
不是查找替换!是选择需要替换的文本

感谢大侠,这个输入前缀收下啦,有其他用处的,就是批量的时候,可以用到的哈,还有就是我一直想,比如偶尔看到一个JL-1想改成JS-1或者JD-1   或者DX-1改成 GX-1,还有其他的,因为前缀不是很多的,就固定那么几个几种的,所以我固定的代码写好,命令一下就可以快速的改动的

tryhi 发表于 2020-3-16 10:42:28

magicheno 发表于 2020-3-15 00:05
大侠,我想中间想加一组"JS*""JZ*""JG*",需要用什么来隔断下呢
(defun c:TT7 (/ dat en i lst str st ...

直接加不行吗

magicheno 发表于 2020-3-16 14:08:52

本帖最后由 magicheno 于 2020-3-16 14:11 编辑

tryhi 发表于 2020-3-16 10:42
直接加不行吗
大侠,因为想加好几组东西,例如还有RJRHXHDX GX等等,一轮下来要好久的吗,有时候想JG变道JZ要点一轮的太长了,如果是可以前进后退的话,好像列层一列就没问题了

mikewolf2k 发表于 2020-3-16 15:03:40

magicheno 发表于 2020-3-16 14:08
大侠,因为想加好几组东西,例如还有RJRHXHDX GX等等,一轮下来要好久的吗,有时候想JG变道JZ要 ...

前面就提醒过你了,这么点要点到何时才结束。
页: 1 [2] 3 4
查看完整版本: 固定的几个前缀字符,该如何实现自动切换呢