江南十笑 发表于 2023-5-10 10:45:47

这个图层转换的程序如何修改支持块内图层?

本帖最后由 江南十笑 于 2023-5-23 12:40 编辑


[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif(defun c:tt ()
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif(setq lst '(("jmd,dldw" "居民地及设施")
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif            ("DGX,GCD,DMTZ" "地貌")
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif            ("DLSS" "交通")
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif            ("GXYZ" "管线")
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif            ("KZD" "测量控制点")
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif            ("SXSS" "水系及附属设施")
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif            ("TK" "图廓整饰")
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif            ("ZBTZ" "植被与土质")
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif            ("ZJ" "注记")
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif             )
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif)
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif(foreach a lst
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif    (if (setq ss (ssget "x" (list (cons 8 (car a)))))
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif      (command "change" ss "" "p" "la" (cadr a) "c" "bylayer" "")
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif    )
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif)
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif(princ)
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif)
这个图层转换的程序如何修改支持块内图层?



菜卷鱼 发表于 2023-5-10 10:45:48

本帖最后由 菜卷鱼 于 2023-5-17 14:38 编辑

没有做测试,但是写了注释,假如程序有问题你自己学着改

(defun c:tt ()
(setq lst '(("jmd,dldw" "居民地及设施")
            ("DGX,GCD,DMTZ" "地貌")
            ("DLSS" "交通")
            ("GXYZ" "管线")
            ("KZD" "测量控制点")
            ("SXSS" "水系及附属设施")
            ("TK" "图廓整饰")
            ("ZBTZ" "植被与土质")
            ("ZJ" "注记")
             )
)
(foreach a lst
    (if (setq ss (ssget "x" (list (cons 8 (car a)))))
   (progn
      (command "change" ss "" "p" "la" (cadr a) "c" "bylayer" "")
      (setq ns (ssget "p" '((0 . "insert")))) ;;;从上一次选择的选择集里选出块
      (setq i -1)
      (repeat (sslength ns);;;每个块处理一遍
      (setq blk (ssname ns (setq i (1+ i))))
      (setq lst2 (blklst blk));;;;块转成列表
      (foreach obj lst2;;;;每个块内的成员处理一遍
         (setq info (entget obj))
         (setq newlayer (cons 67 (cadr a))) ;;;新的图层
         (setq newcolor (cons 62 0));;;;新的颜色
         (entmod (subst newlayer (assoc 67 info) info));;;新图层替换旧图层
         ;;(entmod (subst newcolor (assoc 62 info) info));;;Bylayer颜色的时候 62索引项是没有的,假如要换别的颜色就用得上
         (entmod (vl-remove (assoc 62 info) info)) ;;;颜色改成bylayer
      )
   )
    )
)
(princ)
)

菜卷鱼 发表于 2023-5-10 14:15:51

(defun blkelst (Name / E LST)
(setq e (TBLOBJNAME "block" Name))
(while (setq e (entnext e))
    (setq Lst (cons e Lst))
)
Lst
)

江南十笑 发表于 2023-5-13 10:34:43

菜卷鱼 发表于 2023-5-10 14:15
(defun blkelst (Name / E LST)
(setq e (TBLOBJNAME "block" Name))
(while (setq e (entnext e))


这个函数怎么插入上面的程序中呢

江南十笑 发表于 2023-5-16 21:59:11

菜卷鱼 发表于 2023-5-10 10:45
没有做测试,但是写了注释,假如程序有问题你自己学着改

谢谢 虽然测试块内还是没改 我再研究研究

菜卷鱼 发表于 2023-5-17 08:53:45

江南十笑 发表于 2023-5-16 21:59
谢谢 虽然测试块内还是没改 我再研究研究

你之前要是上传了图纸附件就测试了

菜卷鱼 发表于 2023-5-17 14:38:44

江南十笑 发表于 2023-5-16 21:59
谢谢 虽然测试块内还是没改 我再研究研究

你再试试,之前两个lst变量重复了,改了第二个

江南十笑 发表于 2023-5-23 12:41:12

谢谢大佬 经测试 块内还是不行 块外可以 已上传测试文件
页: [1]
查看完整版本: 这个图层转换的程序如何修改支持块内图层?