找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3789|回复: 16

[他山之石] 全面的给你图形减肥的工具

[复制链接]

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-5-24 11:17:48 | 显示全部楼层 |阅读模式

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

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

×


贴个LEE-MAC的清理图形的代码。全面的给你图形减肥。

[pcode=lisp,true]
(defun c:cleandwg ( / *error* _effectivename bkc cmd doc ext flg lck lst lyc )

    ;; Error Handler
    (defun *error* ( m )
        ;; Relock Layers
        (foreach lay lck
            (if (not (vlax-erased-p lay))
                (vla-put-lock lay :vlax-true)
            )
        )
        ;; Reset CMDECHO
        (if (= 'int (type cmd))
            (setvar 'cmdecho cmd)
        )
        ;; Print critical errors
        (if (not (wcmatch (strcase m t) "*break,*cancel*,*exit*"))
            (princ (strcat "\nError: " m))
        )
        (princ)
    )

    ;; Function to return block effective name
    (defun _effectivename ( obj )
        (if (vlax-property-available-p obj 'effectivename)
            (vla-get-effectivename obj)
            (vla-get-name obj)
        )
    )

    (setq doc (vla-get-activedocument (vlax-get-acad-object))
          lyc (vla-get-layers doc)
          bkc (vla-get-blocks doc)
          cmd (getvar 'cmdecho)
    )
    ;; Unlock all layers
    (vlax-for lay lyc
        (if (= :vlax-true (vla-get-lock lay))
            (progn
                (setq lck (cons lay lck))
                (vla-put-lock lay :vlax-false)
            )
        )
    )

    ;; Remove Anonymous Groups
    (vlax-for grp (vla-get-groups doc)
        (if (wcmatch (vla-get-name grp) "`**")
            (vl-catch-all-apply 'vla-delete (list grp))
        )
    )

    ;; Detect empty block definitions
    (vlax-for blk bkc
        (if
            (and
                (= :vlax-false (vla-get-isxref blk))
                (= :vlax-false (vla-get-islayout blk))
            )
            (progn
                (vlax-for obj blk (setq flg t))
                (if (null flg)
                    (setq lst (cons (strcase (vla-get-name blk)) lst))
                )
                (setq flg nil)
            )
        )
    )
    ;; Remove all references of empty definitions
    (vlax-for blk bkc
        (vlax-for obj blk
            (if
                (and
                    (= "AcDbBlockReference" (vla-get-objectname obj))
                    (member (strcase (_effectivename obj)) lst)
                )
                (vl-catch-all-apply 'vla-delete (list obj))
            )
        )
    )
    ;; Remove empty block definitions
    (foreach blk lst
        (vl-catch-all-apply 'vla-delete (list (vla-item bkc blk)))
    )

    ;; Remove Layer Property & Group Filters
    (if
        (and
            (= :vlax-true (vla-get-hasextensiondictionary lyc))
            (setq ext (vla-getextensiondictionary lyc))
        )
        (foreach dic '("ACLYDICTIONARY" "ACAD_LAYERFILTERS")
             (vl-catch-all-apply 'vla-remove (list ext dic))
        )
    )   

    ;; Turn off command echo
    (setvar 'cmdecho 0)

    ;; Remove unused scales
    (command "_.-scalelistedit" "_D" "*" "_E")

    ;; Purge All
    (repeat 3 (command "_.-purge" "_A" "*" "_N"))

    ;; Reset command echo
    (setvar 'cmdecho cmd)

    ;; Relock Layers
    (foreach lay lck
        (if (not (vlax-erased-p lay))
            (vla-put-lock lay :vlax-true)
        )
    )

    ;; Exit cleanly
    (princ)
)
(vl-load-com) (princ)

[/pcode]

评分

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

查看全部评分

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

已领礼包: 3337个

财富等级: 富可敌国

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

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

 楼主| 发表于 2013-5-24 11:52:42 | 显示全部楼层
ww822 发表于 2013-5-24 11:34
其实就是PURGE命令

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

使用道具 举报

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

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

发表于 2013-5-24 15:22:14 | 显示全部楼层
高版本的scalelist很占内存!很多人习惯在编辑图时采用Crtl+C,Crtl+Paste,这样每复制一次,CAD就要把ScaleList复制一次,经过无数次编辑后,CAD图变得庞大无比,其实就是ScaleList搞得怪!其他词典类数据都不建议删除!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

 楼主| 发表于 2013-5-24 15:35:03 | 显示全部楼层

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

使用道具 举报

已领礼包: 987个

财富等级: 财运亨通

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

使用道具 举报

发表于 2013-5-24 16:20:48 | 显示全部楼层
造成DWG垃圾的数据可能有多种,空组、空字、零长度线、未引用Blockdef、图层过滤器,最烦的词典、某些代理、Xrecord、数据错误等等
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

 楼主| 发表于 2013-5-24 16:27:15 | 显示全部楼层
Free-Lancer 发表于 2013-5-24 16:20
造成DWG垃圾的数据可能有多种,空组、空字、零长度线、未引用Blockdef、图层过滤器,最烦的词典、某些代理 ...

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

使用道具 举报

发表于 2013-5-24 18:14:05 来自手机 | 显示全部楼层
14的purge可以清理空字,零长度线,空组,低版的不知道了来自: Android客户端
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

 楼主| 发表于 2013-5-24 18:43:30 | 显示全部楼层
Free-Lancer 发表于 2013-5-24 18:14
14的purge可以清理空字,零长度线,空组,低版的不知道了

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

使用道具 举报

已领礼包: 35个

财富等级: 招财进宝

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

使用道具 举报

发表于 2013-5-25 00:51:43 | 显示全部楼层
Lispboy 发表于 2013-5-24 18:43
14是啥,ACAD R14版本?

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

使用道具 举报

已领礼包: 685个

财富等级: 财运亨通

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-24 14:21 , Processed in 0.414255 second(s), 57 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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