CAD图层改名
在cad里边对图层改名一直是我很头痛的问题,虽然通过(tbnext "LAYER" T)能比较方便的得到图层名列表,但想进一 个步对列表的图层名进行改名时却遇到了很大麻烦,直接调用layer命令吧,它后边的命令选项里边就没一个改名的,用ENTMOD吧,虽然可以用ENTMAKE的方法建一个图层出来,但用ENTMOD的时候却行不通,因为没法仅仅通过图层名去得到该图层的所有DXF数据,当然过程中到底哪里疏忽了,心力交瘁之余没去深究,最后不得不转向并不熟悉的ACTIVEX方法,通过调试,终于在昨天实现了现在分享给大家,希望大家指出其中不足之处,也好让我再学习下下
(Defun STABEL(TBL / snl sll)
(SetQ snl '()sll (TblNext TBL T))
(While (SetQ snl (Cons (Cdr (Assoc 2 sll)) snl)sll (TblNext TBL nil)))
(setq snl (reverse snl)))
(defun c:test()
(setq lys(vla-get-Layers(setq AcDocument(vla-get-ActiveDocument(vlax-get-acad-object))))
ly1(STABEL "LAYER"))
(vlax-for ly lys
(setq b(vlax-get-property ly "Name")
c(cond((="JZD"b)"地籍界线")
((="JZP"b)"界址点")
((="KZD"b)"测量控制点")
((="SXSS"b)"水系及附属设施")
((="JMD"b)"居民地及设施")
((="DLSS"b)"交通及附属设施")
((="GXYZ"b)"管线及附属设施")
((="DMTZ"b)"地貌")
((="GCD"b)"高程点及注记")
((="ZBTZ"b)"植被和土质")
((="ZJ"b)"注记")
((="DLDW"b)"独立地物")
((="DLJ"b)"地籍要素注记")
((="TK"b)"图廓整饰")
(T b)))
(if(and(/= b c)(null(member c ly1)))(vla-put-name ly c))
)(princ)
)
本帖最后由 zml84 于 2013-3-27 16:58 编辑
(Defun STABEL (TBL / snl sll)(SetQ snl '()
sll (TblNext TBL T)
)
(While (SetQ snl (Cons (Cdr (Assoc 2 sll)) snl)
sll (TblNext TBL nil)
)
)
(setq snl (reverse snl))
)
(defun c:tt ()
(setq lys (vla-get-Layers
(setq AcDocument
(vla-get-ActiveDocument (vlax-get-acad-object))
)
)
ly1 (STABEL "LAYER")
)
(vlax-for ly lys
(setq b (vlax-get-property ly "Name")
c (assoc (strcase b)
'(("JZD" "地籍界线")
("JZP" "界址点")
("KZD" "测量控制点")
("SXSS" "水系及附属设施")
("JMD" "居民地及设施")
("DLSS" "交通及附属设施")
("GXYZ" "管线及附属设施")
("DMTZ" "地貌")
("GCD" "高程点及注记")
("ZBTZ" "植被和土质")
("ZJ" "注记")
("DLDW" "独立地物")
("DLJ" "地籍要素注记")
("TK" "图廓整饰")
)
)
c (cadr c)
)
(and c
(not (member c ly1))
(princ (strcat "\n****替换图层名称: " b " --> " c));_ZML84 修改于 2013-3-27
(vla-put-name ly c)
)
)
(princ)
)
我也一直很想有这个,希望能解决。。 跳跳虫 发表于 2013-3-28 21:30 static/image/common/back.gif
我也一直很想有这个,希望能解决。。
已经解决了,不过没注意到用可用RENAME命令就能做到 zml84 发表于 2013-3-27 16:33
请问如何将修改前后名称放到记事本或excel中,如A列为CAD中原名称,B列为修改后名称,程序自动调入数据文件替换呢
页:
[1]