这个图层转换的程序如何修改支持块内图层?
本帖最后由 江南十笑 于 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-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)
) (defun blkelst (Name / E LST)
(setq e (TBLOBJNAME "block" Name))
(while (setq e (entnext e))
(setq Lst (cons e Lst))
)
Lst
) 菜卷鱼 发表于 2023-5-10 14:15
(defun blkelst (Name / E LST)
(setq e (TBLOBJNAME "block" Name))
(while (setq e (entnext e))
这个函数怎么插入上面的程序中呢
菜卷鱼 发表于 2023-5-10 10:45
没有做测试,但是写了注释,假如程序有问题你自己学着改
谢谢 虽然测试块内还是没改 我再研究研究 江南十笑 发表于 2023-5-16 21:59
谢谢 虽然测试块内还是没改 我再研究研究
你之前要是上传了图纸附件就测试了 江南十笑 发表于 2023-5-16 21:59
谢谢 虽然测试块内还是没改 我再研究研究
你再试试,之前两个lst变量重复了,改了第二个 谢谢大佬 经测试 块内还是不行 块外可以 已上传测试文件
页:
[1]