找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 782|回复: 0

[他山之石] 用LISP删除 LayerFilters (非-ActiveX)

[复制链接]
发表于 2013-5-25 03:53:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
Delete LayerFilters using LISP (non-ActiveX)                                                        by Fenton Webb
  So maybe you want to write an AutoLISP function (not ActiveX) to delete layerFilters.
  With ActiveX (vla-xxx) functions, you can obtain the ACADLAYERS_DICTIONARY dictionary by calling
  (vla-getextensiondictionary <layerscollection>)
  but how can we access ACAD_LAYERFILTERS and delete the layerfilters, using just plain old AutoLISP?
  Here’s how…
  1. (defun C:DelLyrFlt ( / tbl lyr xlist xrec filt)
  2.    (setq tbl (tblnext "LAYER" T)
  3.             lyr (tblobjname "LAYER" (cdr(assoc 2 tbl)))
  4.    ) ;setq
  5.    ;;Find the"ACAD_LAYERFILTERS" xrecord in the extension dictionary of the layer
  6.    (setq xlist (dictsearch
  7.                      (cdr (assoc 360 (entget (cdr (assoc 330 (entget lyr))))))
  8.                      "ACAD_LAYERFILTERS")
  9.    ) ;setq
  10.    (if xlist
  11.       (progn
  12.          ;;Get the first layer_filter
  13.          (setq xrec (cdr (assoc -1 xlist))
  14.                  filt (dictnext xrec t)
  15.          ) ;setq
  16.          ;;Remove each layer_filter
  17.          (while filt
  18.             (dictremove xrec (cdr (assoc 1 filt)))
  19.             (setq filt (dictnext xrec t))
  20.          ) ;while
  21.          ;;Find the"ACAD_LAYERFILTERS" xrecord
  22.          (dictremove
  23.             (cdr (assoc 360 (entget (cdr (assoc 330 (entget lyr))))))
  24.             "ACAD_LAYERFILTERS"
  25.          )
  26.       ) ;progn
  27.    ) ;if
  28.    (princ)
  29. )

评分

参与人数 1D豆 +2 收起 理由
ScmTools + 2 很给力!经验;技术要点;资料分享奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-25 14:38 , Processed in 0.226055 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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