明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: magicheno

[提问] 固定的几个前缀字符,该如何实现自动切换呢

[复制链接]
发表于 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))
                        )
                )
        )
)

评分

参与人数 1明经币 +1 收起 理由
mingjing9971 + 1

查看全部评分

 楼主| 发表于 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 ...

感谢感谢大神,这个可以的很好用的
 楼主| 发表于 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))
                        )
                )
        )
)
发表于 2020-3-15 00:15:30 | 显示全部楼层
magicheno 发表于 2020-3-15 00:05
大侠,我想中间想加一组"JS*"  "JZ*"  "JG*",需要用什么来隔断下呢
(defun c:TT7 (/ dat en i lst str st ...

你完全可以去搜索一下批量替换前缀后缀来实现啊!!直接先删掉原有的前缀字符,然后加上你想要的任意字符就可以了!论坛里就有!
 楼主| 发表于 2020-3-15 00:22:59 | 显示全部楼层
cq4920 发表于 2020-3-15 00:15
你完全可以去搜索一下批量替换前缀后缀来实现啊!!直接先删掉原有的前缀字符,然后加上你想要的任意字符 ...

替换的功能我知道的呢,很多的,软件自带的也有的,就是我的想法会提高下效率吧,因为有时候就改一两个前缀,用替换的话,很拖节奏的,如果是大批量修改的话,那肯定是用查找替换或其他的
发表于 2020-3-15 00:25:26 | 显示全部楼层
magicheno 发表于 2020-3-15 00:22
替换的功能我知道的呢,很多的,软件自带的也有的,就是我的想法会提高下效率吧,因为有时候就改一两个前 ...

不是查找替换!是选择需要替换的文本
  1. ;;-前缀---
  2. (defun c:gb(/ en en_data e older new)
  3.   (setvar "cmdecho" 0)
  4.   (SETQ BASE (GETstring "输入前缀:"))
  5.   (setq en (ssget))
  6.   (setq n 0)
  7.   (while (setq enn (ssname en n))
  8.       (setq en_data (entget enn))
  9.      (setq old_name_list(assoc 1 en_data))
  10.      (setq old_nn (cdr old_name_list))
  11.      (setq new_rr (strcat base old_nn))
  12.      (setq new_name_list(cons 1 new_rr))
  13.      (setq en_data (subst new_name_list old_name_list en_data))
  14.      (entmod en_data)
  15.      (setq n (1+ n))
  16.   )
  17. (prin1)
  18. )
 楼主| 发表于 2020-3-15 00:42:19 | 显示全部楼层
cq4920 发表于 2020-3-15 00:25
不是查找替换!是选择需要替换的文本

感谢大侠,这个输入前缀收下啦,有其他用处的,就是批量的时候,可以用到的哈,还有就是我一直想,比如偶尔看到一个JL-1想改成JS-1或者JD-1   或者DX-1改成 GX-1,还有其他的,因为前缀不是很多的,就固定那么几个几种的,所以我固定的代码写好,命令一下就可以快速的改动的
发表于 2020-3-16 10:42:28 | 显示全部楼层
magicheno 发表于 2020-3-15 00:05
大侠,我想中间想加一组"JS*"  "JZ*"  "JG*",需要用什么来隔断下呢
(defun c:TT7 (/ dat en i lst str st ...

直接加不行吗
 楼主| 发表于 2020-3-16 14:08:52 | 显示全部楼层
本帖最后由 magicheno 于 2020-3-16 14:11 编辑

大侠,因为想加好几组东西,例如还有RJ  RH  XH  DX GX  等等,一轮下来要好久的吗,有时候想JG变道JZ要点一轮的太长了,如果是可以前进后退的话,好像列层一列就没问题了
发表于 2020-3-16 15:03:40 | 显示全部楼层
magicheno 发表于 2020-3-16 14:08
大侠,因为想加好几组东西,例如还有RJ  RH  XH  DX GX  等等,一轮下来要好久的吗,有时候想JG变道JZ要 ...

前面就提醒过你了,这么点要点到何时才结束。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-18 13:53 , Processed in 0.168590 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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