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要 ...
前面就提醒过你了,这么点要点到何时才结束。