- UID
- 270761
- 积分
- 154
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2005-6-1
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
(vl-load-com)
(defun DelWrongGrp ( / doc err grpsobj num grpobj rtn nn)
;;功能:删除冗余组,返回删除的个数
;;冗余组:匿名组、不包括任何图形对象的组
(setq doc (vla-get-activedocument (vlax-get-acad-object)))
(setq err (vl-catch-all-apply 'vla-get-groups (list doc)));;错误图形
(if (vl-catch-all-error-p err)
(setq rtn nil)
(progn
(setq grpsobj (vla-get-groups doc))
(setq num (vla-get-count grpsobj) rtn 0 nn 0)
(repeat num
(setq grpobj (vla-item grpsobj nn))
(if (= (vla-get-count grpobj) 0)
(progn
(vla-delete grpobj)
(setq rtn (1+ rtn))
)
(progn
(if (= "*" (substr (vla-get-name grpobj) 1 1))
(progn
(vla-delete grpobj)
(setq rtn (1+ rtn))
)
(setq nn (1+ nn))
)
)
)
)
)
)
rtn
)
(defun DelAllLayFilter(/ doc lays dicts err1 err2 rtn)
;;功能:删除图层过滤器
(setq doc (vla-get-activedocument (vlax-get-acad-object)))
(setq lays (vla-get-layers doc))
(setq dicts (vla-GetExtensionDictionary lays))
(vl-catch-all-apply 'vla-remove (list dicts "ACAD_LAYERFILTERS"))
(setq err1 (vl-catch-all-apply 'vla-remove (list dicts "ACAD_LAYERFILTERS")))
(vl-catch-all-apply 'vla-remove (list dicts "AcLyDictionary"))
(setq err2 (vl-catch-all-apply 'vla-remove (list dicts "AcLyDictionary")))
(if (vl-catch-all-error-p err1)
(setq rtn T)
(vla-remove dicts "ACAD_LAYERFILTERS")
)
(if (null (vl-catch-all-error-p err2))
(vla-remove dicts "AcLyDictionary")
)
rtn
)
(defun ImageLst ( / dicts err imgdict num nn img rtn)
;;功能:获取图中插入的图像
(setq dicts (vla-get-dictionaries (vla-get-activedocument (vlax-get-acad-object))))
(setq err (vl-catch-all-apply 'vla-item (list dicts "ACAD_IMAGE_DICT")))
(if (vl-catch-all-error-p err)
(setq rtn nil)
(progn
(setq imgdict (vla-item dicts "ACAD_IMAGE_DICT"))
(setq num (vla-get-count imgdict) rtn'() nn 0)
(repeat num
(setq img (vla-item imgdict nn) nn (1+ nn))
(setq rtn (cons img rtn))
)
)
)
rtn
)
(defun c:DelImage()
;;功能:清除所有图像
(if (imagelst)
(command "-image" "d" "*")
)
(prin1)
)
;;;压缩开始
(DelAllLayFilter)
(delwronggrp)
(c:DelImage)
(command "-purge" "all" "*" "n")
使用方法:复制上面的代码,另存为*.lsp,直接在CAD里加载(appload)即可。 |
|