明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3587|回复: 5

CAD图层改名

[复制链接]
发表于 2013-3-27 15:55:31 | 显示全部楼层 |阅读模式
在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)
)


点评

(command "rename" "la" a b)  发表于 2013-3-27 16:48
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2013-3-27 16:33:25 | 显示全部楼层
本帖最后由 zml84 于 2013-3-27 16:58 编辑

复制代码
  1. (Defun STABEL (TBL / snl sll)  (SetQ        snl '()
  2.         sll (TblNext TBL T)
  3.   )
  4.   (While (SetQ snl (Cons (Cdr (Assoc 2 sll)) snl)
  5.                sll (TblNext TBL nil)
  6.          )
  7.   )
  8.   (setq snl (reverse snl))
  9. )

  10. (defun c:tt ()
  11.   (setq        lys (vla-get-Layers
  12.               (setq AcDocument
  13.                      (vla-get-ActiveDocument (vlax-get-acad-object))
  14.               )
  15.             )
  16.         ly1 (STABEL "LAYER")
  17.   )
  18.   (vlax-for ly lys
  19.     (setq b (vlax-get-property ly "Name")          
  20.           c (assoc (strcase b)
  21.                    '(("JZD" "地籍界线")
  22.                      ("JZP" "界址点")
  23.                      ("KZD" "测量控制点")
  24.                      ("SXSS" "水系及附属设施")
  25.                      ("JMD" "居民地及设施")
  26.                      ("DLSS" "交通及附属设施")
  27.                      ("GXYZ" "管线及附属设施")
  28.                      ("DMTZ" "地貌")
  29.                      ("GCD" "高程点及注记")
  30.                      ("ZBTZ" "植被和土质")
  31.                      ("ZJ" "注记")
  32.                      ("DLDW" "独立地物")
  33.                      ("DLJ" "地籍要素注记")
  34.                      ("TK" "图廓整饰")
  35.                     )
  36.             )
  37.           c (cadr c)
  38.     )
  39.     (and c
  40.          (not (member c ly1))
  41.          (princ (strcat "\n****替换图层名称: " b " --> " c));_ZML84 修改于 2013-3-27
  42.          (vla-put-name ly c)         
  43.     )
  44.   )
  45.   (princ)
  46. )
发表于 2013-3-28 21:30:07 | 显示全部楼层
我也一直很想有这个,希望能解决。。
 楼主| 发表于 2013-3-29 08:40:34 | 显示全部楼层
跳跳虫 发表于 2013-3-28 21:30
我也一直很想有这个,希望能解决。。

已经解决了,不过没注意到用可用RENAME命令就能做到
发表于 2020-12-7 17:00:42 | 显示全部楼层

请问如何将修改前后名称放到记事本或excel中,如A列为CAD中原名称,B列为修改后名称,程序自动调入数据文件替换呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-22 22:21 , Processed in 0.190236 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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