找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1094|回复: 6

[转贴]:Purge

[复制链接]

已领礼包: 593个

财富等级: 财运亨通

发表于 2004-1-27 18:44:16 | 显示全部楼层 |阅读模式

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

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

×
转自: http://www.jtbworld.com/?/lisp/purger.htm
放到这里找起来方便:)

  1. ;;; PURGER.LSP
  2. ;;;
  3. ;;; Various purge functions with no command line echo
  4. ;;;
  5. ;;; By Jimmy Bergmark
  6. ;;; Copyright (C) 1997-2003 JTB World, All Rights Reserved
  7. ;;; Website: [url]www.jtbworld.com[/url] / [url]http://jtbworld.vze.com[/url]
  8. ;;; E-mail: [email]info@jtbworld.com[/email] / [email]jtbworld@hotmail.com[/email]
  9. ;;; 2000-02-12 - First release
  10. ;;; 2003-01-09 - More added
  11. ;;; Written for AutoCAD 2000, 2000i and 2002
  12. ;;;

  13. ;;; Purge named block
  14. ;;; Example: (ax:purge-block (vla-get-activedocument (vlax-get-acad-object)) "testblock")
  15. ;;; Argument: doc {document}
  16. ;;;           name {a block name}
  17. ;;; Return values: T if successful, nil if not successful
  18. (defun ax:purge-block (doc name)
  19.   (if (vl-catch-all-error-p
  20.         (vl-catch-all-apply
  21.           'vla-delete
  22.           (list (vl-catch-all-apply
  23.                   'vla-item
  24.                   (list (vla-get-blocks doc) name)
  25.                 )
  26.           )
  27.         )
  28.       )
  29.     nil ; name cannot be purged or doesn't exist
  30.     T ; name purged
  31.   )
  32. )

  33. ;;; Purge named layer
  34. ;;; Example: (ax:purge-layer (vla-get-activedocument (vlax-get-acad-object)) "testlayer")
  35. ;;; Argument: doc {document}
  36. ;;;           name {a layer name}
  37. ;;; Return values: T if successful, nil if not successful
  38. (defun ax:purge-layer (doc name)
  39.   (if (vl-catch-all-error-p
  40.         (vl-catch-all-apply
  41.           'vla-delete
  42.           (list (vl-catch-all-apply
  43.                   'vla-item
  44.                   (list (vla-get-layers doc) name)
  45.                 )
  46.           )
  47.         )
  48.       )
  49.     nil ; name cannot be purged or doesn't exist
  50.     T ; name purged
  51.   )
  52. )

  53. ;;; Purge all layers
  54. ;;; Example: (ax:purge-all-layers (vla-get-activedocument (vlax-get-acad-object)))
  55. ;;; Argument: doc {document}
  56. (defun ax:purge-all-layers (doc)
  57.   (vlax-for item (vla-get-layers doc)
  58.     (purge-layer (vla-get-name item))
  59.   )
  60. )

  61. ;;; Purge all layers except those in list
  62. ;;; Example: (ax:purge-layers (vla-get-activedocument (vlax-get-acad-object)) '("DIM" "LAYER1"))
  63. ;;; Argument: doc {document}
  64. ;;;           name {a layer name list}
  65. (defun ax:purge-layers (doc except)
  66.   (vlax-for item (vla-get-layers doc)
  67.     (setq ln (vla-get-name item))
  68.     (if (not (member (strcase ln) except))
  69.       (purge-layer ln)
  70.     )
  71.   )
  72. )

  73. ;;; Purge all with no echo to command window
  74. ;;; Example: (ax:purge-no-echo (vla-get-activedocument (vlax-get-acad-object)))
  75. ;;; Argument: doc {document}
  76. (defun ax:purge-no-echo (doc)

  77. ;;; Returns a list of keynames from the specified dictionary
  78. (defun getkeys (dictName / tmp)
  79.   (if (setq tmp (dictsearch (namedobjdict) dictName))
  80.     (massoc 3 tmp)
  81.   )
  82. )

  83. ;;; Retrieves the entity name of the specified dictionary
  84. (defun getdictname (dictName)
  85.   (if (setq tmp (dictsearch (namedobjdict) dictName))
  86.     (cdr (assoc -1 tmp))
  87.   )
  88. )
  89.   
  90. ;;; Utility function to get multiple group code CDRs
  91. (defun massoc (key alist / x nlist)
  92.   (foreach x alist
  93.     (if (eq key (car x))
  94.       (setq nlist (cons (cdr x) nlist))
  95.     )
  96.   )
  97.   (reverse nlist)
  98. )
  99.   
  100.   (vlax-for item (vla-get-blocks doc)
  101.     (vl-catch-all-apply 'vla-delete (list item))
  102.   )
  103.   (vlax-for item (vla-get-dimstyles doc)
  104.     (vl-catch-all-apply 'vla-delete (list item))
  105.   )
  106.   (vlax-for item (vla-get-linetypes doc)
  107.     (vl-catch-all-apply 'vla-delete (list item))
  108.   )
  109.   (vlax-for item (vla-get-plotconfigurations doc)
  110.     (vl-catch-all-apply 'vla-delete (list item))
  111.   )
  112.   ; textstyles
  113.   (vlax-for item (vla-get-textstyles doc)
  114.     (if (= (cdr (assoc 70 (entget (vlax-vla-object->ename item)))) 0)
  115.       (vl-catch-all-apply 'vla-delete (list item))
  116.     )
  117.   )
  118.   ; shapes
  119.   (vlax-for item (vla-get-textstyles doc)
  120.     (if (= (cdr (assoc 70 (entget (vlax-vla-object->ename item)))) 1)
  121.       (vl-catch-all-apply 'vla-delete (list item))
  122.     )
  123.   )
  124.   (setq li (getkeys "ACAD_MLINESTYLE"))
  125.   (setq len (length li))
  126.   ; one style has to be left
  127.   (foreach na (cdr li)
  128.     (delrecord "ACAD_MLINESTYLE" na)
  129.   )
  130.   (setq li (getkeys "ACAD_MLINESTYLE"))
  131.   (setq len (length li))
  132.   (if (> len 1)
  133.     (delrecord "ACAD_MLINESTYLE" (car li))
  134.   )
  135.   (vlax-for item (vla-get-layers doc)
  136.     (vl-catch-all-apply 'vla-delete 'item)
  137.   )
  138.   nil
  139. )

  140. ;;; Purge/delete all layer filter or filters
  141. ;;; Example: (DeleteLayerFilters)
  142. (defun DeleteLayerFilters ()
  143.   (vl-Catch-All-Apply
  144.     '(lambda ()
  145.        (vla-Remove
  146.          (vla-GetExtensionDictionary
  147.            (vla-Get-Layers
  148.              (vla-Get-ActiveDocument (vlax-Get-Acad-Object))
  149.            )
  150.          )
  151.          "ACAD_LAYERFILTERS"
  152.        )
  153.      )
  154.   )
  155.   (princ)
  156. )

  157. ;;; Purge/delete all layer states
  158. ;;; Example: (DeleteLayerStates)
  159. (defun DeleteLayerStates  ()
  160. (vl-Catch-All-Apply
  161.   '(lambda ()
  162.     (vla-Remove (vla-GetExtensionDictionary
  163.                  (vla-Get-Layers
  164.                   (vla-Get-ActiveDocument
  165.                    (vlax-Get-Acad-Object))))
  166.                 "ACAD_LAYERSTATES")))
  167. (princ)
  168. )
  169. ;;; Purge/delete all Express Tool layer states
  170. ;;; Example: (LmanKill)
  171. (defun LmanKill (/ lyr ent cnt)
  172.   (setq cnt 0)
  173.   (while (setq lyr (tblnext "layer" (not lyr)))
  174.     (setq ent (entget (tblobjname "layer" (cdr (assoc 2 lyr)))'("RAK")))
  175.     (if (and ent (assoc -3 ent))
  176.       (progn
  177.         (setq ent (subst '(-3 ("RAK")) (assoc -3 ent) ent))
  178.         (entmod ent)
  179.         (setq cnt (1+ cnt))
  180.       )
  181.     )
  182.   )
  183. (princ)
  184. )
  185. ;;; (deleteAllPageSetups)
  186. (defun deleteAllPageSetups (/ pc)
  187.   (vlax-for pc (vla-get-plotconfigurations (vla-get-activedocument (vlax-get-acad-object)))
  188.     (vla-delete pc)
  189.   )
  190. )
  191. (defun PurgeAnonymGroups (/ grpList index grp)
  192.   (setq grpList (dictsearch (namedobjdict) "ACAD_GROUP"))
  193.   (setq index 1)
  194.   (while (setq grp (nth index grplist))
  195.     (if        (= (car grp) 3)
  196.       (progn
  197.         (if (= (chr 42) (substr (cdr grp) 1 1))
  198.           (entdel (cdr (nth (+ index 1) grplist)))
  199.         )
  200.       )
  201.     )
  202.     (setq index (+ 1 index))
  203.   )
  204.   (princ)
  205. )
  206. (defun PurgeAllGroups (/ grpList index grp)
  207.   (setq grpList (dictsearch (namedobjdict) "ACAD_GROUP"))
  208.   (setq index 1)
  209.   (while (setq grp (nth index grplist))
  210.     (if        (= (car grp) 3)
  211.       (entdel (cdr (nth (+ index 1) grplist)))
  212.     )
  213.     (setq index (+ 1 index))
  214.   )
  215.   (princ)
  216. )
  217. (defun DelACAD_VBA ()
  218.   (dictremove (namedobjdict) "ACAD_VBA")
  219.   (princ)
  220. )
  221. (defun PurgeAPPID (/ appid)
  222.   (vl-load-com)
  223.   (vlax-for appid (vla-get-registeredapplications
  224.                     (vla-get-activedocument
  225.                       (vlax-get-acad-object)
  226.                     )
  227.                   )
  228.     (vl-catch-all-apply 'vla-delete (list appid))
  229.   )
  230.   (princ)
  231. )
  232. (princ)

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-2-22 15:17:45 | 显示全部楼层
这个lisp的用处是什么?菜鸟一只,没看懂
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-2-23 03:45:12 | 显示全部楼层
再推荐一个"Batch Purge 2004":
http://www.afralisp.com/vba/bp2004.htm
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-2-27 11:45:07 | 显示全部楼层
对呀,这LISP作用具体是什么,是不是就是CAD里的图形清理命令,如果是那没有什么意义了!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-3-6 23:12:25 | 显示全部楼层
希望高手们发程序能说明一下。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-3-6 23:22:18 | 显示全部楼层
我也希望可以看到简单的说明~
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-3-17 19:54:53 | 显示全部楼层
其实看看说明就知道功能了~~~~
Various purge functions with no command line echo
Purge named block   
Purge all layers
Purge all with no echo to command window
Purge/delete all layer states
Purge/delete all Express Tool layer states
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-18 23:00 , Processed in 0.425081 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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