找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 4574|回复: 49

[每日一码] “拆开”XREF文件

[复制链接]

已领礼包: 20个

财富等级: 恭喜发财

发表于 2017-3-22 08:18:50 | 显示全部楼层 |阅读模式

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

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

×
  1. (defun C:Detachall (/                              *error*
  2.                     mip:layer-status-restore  mip:layer-status-save
  3.                     delete-xref-img-underlay  delete-all-dict
  4.                    )
  5.   (vl-load-com)
  6.   (defun *error* (msg)
  7.     (mip:layer-status-restore)
  8.     (princ msg)
  9.     (princ)
  10.   ) ;_ end of defun
  11.   (defun mip:layer-status-restore ()
  12.     (foreach item *PD_LAYER_LST*
  13.       (if (not (vlax-erased-p (car item)))
  14.         (vl-catch-all-apply
  15.           '(lambda ()
  16.              (vla-put-lock (car item) (cdr (assoc "lock" (cdr item))))
  17.              (vla-put-freeze
  18.                (car item)
  19.                (cdr (assoc "freeze" (cdr item)))
  20.              ) ;_ end of vla-put-freeze
  21.            ) ;_ end of lambda
  22.         ) ;_ end of vl-catch-all-apply
  23.       ) ;_ end of if
  24.     ) ;_ end of foreach
  25.     (setq *PD_LAYER_LST* nil)
  26.   ) ;_ end of defun
  27.   (defun mip:layer-status-save ()
  28.     (setq *PD_LAYER_LST* nil)
  29.     (vlax-for item (vla-get-layers
  30.                      (vla-get-activedocument (vlax-get-acad-object))
  31.                    ) ;_ end of vla-get-layers
  32.       (setq *PD_LAYER_LST*
  33.              (cons (list item
  34.                          (cons "freeze" (vla-get-freeze item))
  35.                          (cons "lock" (vla-get-lock item))
  36.                    ) ;_ end of cons
  37.                    *PD_LAYER_LST*
  38.              ) ;_ end of cons
  39.       ) ;_ end of setq
  40.       (vla-put-lock item :vlax-false)
  41.       (if (= (vla-get-freeze item) :vlax-true)
  42.         (vl-catch-all-apply
  43.           '(lambda () (vla-put-freeze item :vlax-false))
  44.         ) ;_ end of vl-catch-all-apply
  45.       ) ;_ end of if
  46.     ) ;_ end of vlax-for
  47.   ) ;_ end of defun
  48.   (defun delete-xref-img-underlay (/ count txt)
  49.     (mip:layer-status-save)
  50.     (vlax-for Blk (vla-get-Blocks
  51.                     (vla-get-activedocument (vlax-get-acad-object))
  52.                   ) ;_ end of vla-get-Blocks
  53.       (if (and (= (vla-get-IsXref Blk) :vlax-false)
  54.                (not (wcmatch (vla-get-name Blk) "*|*"))
  55.           ) ;_ end of and
  56.         (progn
  57.           (setq        count 0
  58.                 txt   (strcat " Erase Xref and Underlay in "
  59.                               (vla-get-name Blk)
  60.                       ) ;_ end of strcat
  61.           ) ;_ end of setq
  62.           (grtext -1 txt)
  63.           (vlax-for Obj        Blk
  64.             (setq count (1+ count))
  65.             (if        (zerop (rem count 10))
  66.               (grtext -1 (strcat txt " : " (itoa count)))
  67.             ) ;_ end of if
  68.             (if
  69.               (and (vlax-write-enabled-p Obj)
  70.                    (or
  71.                      (and ;_ XREF
  72.                        (= (vla-get-ObjectName obj) "AcDbBlockReference")
  73.                        (vlax-property-available-p Obj "Path")
  74.                      ) ;_ end of and
  75.                      (and ;_ UNDERLAY
  76.                        (wcmatch (vla-get-ObjectName obj) "*Reference")
  77.                        (vlax-property-available-p Obj "UnderlayName")
  78.                      ) ;_ end of and
  79.                      (= (vla-get-ObjectName obj) "AcDbRasterImage") ;_ IMAGE
  80.                    ) ;_ end of or
  81.               ) ;_ end of and
  82.                (VL-CATCH-ALL-APPLY 'vla-Delete (list Obj))
  83.             ) ;_ end of if
  84.           ) ;_ end of vlax-for
  85.         ) ;_ end of progn
  86.       ) ;_ end of if
  87.     ) ;_ end of vlax-for
  88.     (mip:layer-status-restore)
  89.   ) ;_ end of defun
  90.   (defun delete-all-dict (dict)
  91. ;;; dict - dict name (like "ACAD_IMAGE_DICT", "ACAD_PDFDEFINITIONS" ... )
  92.     (vl-catch-all-apply
  93.       '(lambda ()
  94.          (vlax-map-Collection
  95.            (vla-item
  96.              (vla-get-dictionaries
  97.                (vla-get-activedocument (vlax-get-acad-object))
  98.              ) ;_ end of vla-get-dictionaries
  99.              dict ;_ "ACAD_IMAGE_DICT"
  100.            ) ;_ end of vla-Item
  101.            'vla-delete
  102.          ) ;_ end of vlax-map-Collection
  103.        ) ;_ end of lambda
  104.     ) ;_ end of vl-catch-all-apply
  105.   ) ;_ end of defun
  106.   (vl-load-com)
  107.   (delete-xref-img-underlay)
  108.   (command "_-xref" "_d" "*")
  109.   (while (> (getvar "CMDACTIVE") 0) (command))
  110.   (mapcar 'delete-all-dict
  111.           (list        "ACAD_IMAGE_DICT"
  112.                 "ACAD_PDFDEFINITIONS"
  113.                 "ACAD_DWFDEFINITIONS"
  114.                 "ACAD_DGNDEFINITIONS"
  115.           ) ;_ end of list
  116.   ) ;_ end of mapcar
  117.   (command "_.regenall")
  118.   (command "_.externalreferences")
  119.   (princ)
  120. ) ;_ end of defun


命令 c:detachxrefs

游客,如果您要查看本帖隐藏内容请回复


评分

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

查看全部评分

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

已领礼包: 5601个

财富等级: 富甲天下

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

使用道具 举报

已领礼包: 2963个

财富等级: 家财万贯

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

使用道具 举报

已领礼包: 6202个

财富等级: 富甲天下

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

使用道具 举报

已领礼包: 343个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 1441个

财富等级: 财源广进

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

使用道具 举报

已领礼包: 312个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 13个

财富等级: 恭喜发财

发表于 2017-3-24 12:42:09 | 显示全部楼层
学习一下大师经典之作

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

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

发表于 2017-3-30 05:59:35 | 显示全部楼层
收了大师不好东西呀..非常感谢

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

使用道具 举报

已领礼包: 5060个

财富等级: 富甲天下

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

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

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

使用道具 举报

发表于 2017-5-15 12:44:26 | 显示全部楼层
谢谢提供,查看隐藏
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 104个

财富等级: 日进斗金

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

使用道具 举报

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

使用道具 举报

已领礼包: 496个

财富等级: 日进斗金

发表于 2017-8-2 16:33:56 | 显示全部楼层
感谢大师提供程序!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 00:25 , Processed in 0.519248 second(s), 57 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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