明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1060|回复: 13

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

[复制链接]
发表于 2021-7-22 00:31 | 显示全部楼层 |阅读模式
2明经币
本帖最后由 magicheno 于 2021-7-22 00:34 编辑

请教下大佬们,带指定前缀或者后缀的或中间的图层,或者就是固定图名的图层,如何批量转移至各指定图名图层
比如框选一部分图元
使得带后缀图层名为_A1的图层,转移至G_PJ
       带后缀图层名为_B1的图层,转移至G_TX
       带后缀图层名为_C1的图层,转移至G_SB
       带后缀图层名为_D1的图层,转移至G_NOTE
            固定图层名为E1的图层,转移至W_G
            固定图层名为F1的图层,转移至W_P
这样功能能实现么

最佳答案

查看完整内容

(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"))) (setq ss(ssget) 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 (entmod (subst (cons ...
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2021-7-22 00:31 | 显示全部楼层
本帖最后由 tryhi 于 2021-7-22 11:53 编辑

(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")))
        (setq ss(ssget)
                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
                                                (entmod (subst (cons 8 l)(cons 8 layer)(entget en)))
                                                (entupd en)
                                        ))
        )
)
回复

使用道具 举报

发表于 2021-7-22 11:11 | 显示全部楼层
论坛里有图层合并,自己搜索一下
回复

使用道具 举报

发表于 2021-7-22 11:23 | 显示全部楼层
批量的话多半是要自己写代码的

手动归并图层
推荐搜一下高飞鸟大侠的符号管理器

高大侠有几个ID
回复

使用道具 举报

 楼主| 发表于 2021-7-22 13:44 | 显示全部楼层
lingduwx 发表于 2021-7-22 11:11
论坛里有图层合并,自己搜索一下

这个知道的,就是找到的和想要实现的有区别哦
回复

使用道具 举报

 楼主| 发表于 2021-7-22 13:45 | 显示全部楼层
masterlong 发表于 2021-7-22 11:23
批量的话多半是要自己写代码的

手动归并图层

是的,主要不会呢,海哥写了个,试过了效果不错的
回复

使用道具 举报

 楼主| 发表于 2021-7-22 13:46 | 显示全部楼层
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")("* ...

多谢海哥帮忙哦,试过了效果不错的,是我想要的效果
回复

使用道具 举报

发表于 2021-7-22 15:11 | 显示全部楼层
  1. (vl-load-com)
  2. (defun c:tt (/ a en l lay layer o ss)
  3.         (setq lay '(("*_A1" "G_PJ")("*_B1" "G_TX")("*_C1" "G_SB")("*_D1""G_NOTE")("E1""W_G")("F1" "W_P")))
  4.        (if(setq a -1
  5.               ss(ssget(list(cons 8(apply'strcat(mapcar'(lambda(x)(strcat","(car x)))lay))))))
  6.         (while(setq en(ssname ss(setq a(1+ a))))
  7.                 (setq o(vlax-ename->vla-object en)
  8.                         layer(vla-get-layer o))
  9.           (entmod(append(entget en)(list(cons 8(vl-some'(lambda(x)(if(WCMATCH layer(car x))(cadr x)))lay)))))
  10.         ))
  11. )

评分

参与人数 2明经币 +2 收起 理由
magicheno + 1 很给力!
tryhi + 1 加上过滤,不错

查看全部评分

回复

使用道具 举报

发表于 2021-7-22 16:09 | 显示全部楼层
不用考虑图块吗?
回复

使用道具 举报

 楼主| 发表于 2021-7-22 16:53 | 显示全部楼层
masterlong 发表于 2021-7-22 16:09
不用考虑图块吗?

不用这么复杂啦,固定的后缀的一般都是自己默认的,想要由一个系统瞬间变成另一个系统的各个图层的,如果是块的话 块内部都是0层的,没影响的哈
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-10 16:55 , Processed in 0.135742 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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