明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: magicheno

[提问] 带前缀或者后缀的图层,如何批量转移至各指定指定图层

[复制链接]
 楼主| 发表于 2021-7-26 02:18 | 显示全部楼层
本帖最后由 magicheno 于 2021-7-26 02:24 编辑

刮台风,一开始没注意看到哈,感谢大侠,想知道这个加上过滤和海哥的区别在哪里呢
回复

使用道具 举报

 楼主| 发表于 2021-7-26 02:23 | 显示全部楼层
本帖最后由 magicheno 于 2021-7-26 02:29 编辑
tryhi 发表于 2021-7-22 00:31
(vl-load-com)
(defun c:tt (/ a en l lay layer o ss)
        (setq lay '(("*_A1" "G_PJ")("*_B1" "G_TX")("* ...

海哥,我想再请教下,如果是DN_P,DN-S,DN_Y,DN_L,DN_F,等等依次改为WP_P_DN,WP_S_DN,WP_Y_DN,WP_L_DN,WP_F_DN,因为不只有这些还有几百个类似的可能需要替换,是不是只能用笨办法的如下一个一个设置列表呢  (setq lay '(("DN_P" "WP_P_DN")("DN_S" "WP_S_DN")("DN_Y" "WP_Y_DN")("DN_L" "WP_L_DN")("DN_F" "WP_F_DN")))
可不可以用过下面 (setq lay '(("DN_*" "WP_*_DN")))使得实现上面的功能呢
回复

使用道具 举报

发表于 2021-7-26 10:19 | 显示全部楼层
magicheno 发表于 2021-7-26 02:23
海哥,我想再请教下,如果是DN_P,DN-S,DN_Y,DN_L,DN_F,等等依次改为WP_P_DN,WP_S_DN,WP_Y_DN,WP_L_DN,WP_ ...

(vl-load-com)
(defun c:tt (/ a en l lay layer o ss)
        (setq lay '(("*_A1" "G_PJ")("*_B1" "G_TX")("*_C1" "G_SB")("*_D1""G_NOTE")("E1""W_G")("F1" "W_P")("DN_*" "WP_*_DN")))
        (setq ss(ssget(list(cons 8(apply'strcat(mapcar'(lambda(x)(strcat","(car x)))lay)))))
        a -1)
(while(setq en(ssname ss(setq a(1+ a))))
        (setq o(vlax-ename->vla-object en)
                layer(vla-get-layer o)
                l(vl-some '(lambda(x)(if(wcmatch layer (car x))(cadr x))) lay)
        )
        (if l
                (progn
                        (if (wcmatch l "*`**")
                                (setq sp(try-StringSplit layer "_")
                                        l(strcat "WP_"(cadr sp)"_"(car sp))
                                )
                        )
                        (entmod (subst (cons 8 l)(cons 8 layer)(entget en)))
                        (entupd en)
                ))
)
)




;;;======================================
;;;===========以下为内裤部分=============
;;;======================================
(defun try-StringSplit(str char / a b i )
        (if (= "" char)(_Str2List str)
                (progn
                        (while (setq i(vl-string-search char str))
                                (setq a(substr str 1 i)
                                        b(cons a b)
                                        str(substr str (+ i (strlen char)1)))
                        )
                        (reverse(cons str b))
                )
        )
)
(defun _Str2List(str / a);作者:LLSheng_73
        (setq str(vl-string->list str))
        (while
                (if(<(car str)129)
                        (setq a(cons(chr(car str))a)str(cdr str))
                        (setq a(cons(strcat(chr(car str))(chr(cadr str)))a)str(cddr str))))
        (reverse a)
)

评分

参与人数 1明经币 +1 收起 理由
magicheno + 1 感谢海哥,给力

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2021-9-2 20:24 | 显示全部楼层
tryhi 发表于 2021-7-26 10:19
(vl-load-com)
(defun c:tt (/ a en l lay layer o ss)
        (setq lay '(("*_A1" "G_PJ")("*_B1" "G_TX")( ...

海哥,请教下,如果想框选实体或者是两组实体,使得两组实体中的图层互换,比如WP_P_PJ 与WP_G_PJ,WP_P_DN 与WP_G_PJ,WP_P 与WP_G,WP_P_TXT 与WP_G_TXT,WP_P_LG 与WP_G_LG,等等呢,其中的P和G可能是其他字母,也有可能是双字母或者三字母的,这种可以实现么
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-21 02:38 , Processed in 0.200930 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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