明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4976|回复: 5

[原创] 清理空組LISP程序和VBA程序

[复制链接]
发表于 2004-3-7 09:40 | 显示全部楼层 |阅读模式
現在寫出清理空組的LISP程序和尹凡版主用VBA清理空組的程序和大家分享,還望大家多多提出寶貴的見議和指導. ;-----------------------------------------------------------------------------
;清理空組程序源碼
;Make by: BDYCAD
;Date : 2004-03-07
(defun c:DELG (/ i group glist delgro)
(setq group (vla-get-groups
(vla-get-Activedocument (vlax-get-acad-object))
)
)
(setq i 0); 循還初始值設定
(repeat (vla-get-count group); 列出空組的組表
(if (= (vla-get-count (setq glist (vla-item group i))) 0)
(setq delgro (cons (vla-get-name glist) delgro))
)
(setq i (+ i 1))
)
(setq i 0)
(setvar "cmdecho" 0); 關閉命令行回顯
(command ;|MSG0|;"_.undo" ;|MSG0|;"_group")
(REPEAT (length delgro); 循還清除空組組名
(command ".group""e" (nth i delgro))
(setq i (1+ i)))
(command ;|MSG0|;"_.undo" ;|MSG0|;"_end")
(setvar "cmdecho" 1)
(princ"\n現在以將空組清理了. ")
(princ)
) VBA的做法, -------------------------------- 編寫:尹凡 Sub test()
Dim GroupObj As AcadGroup
For Each GroupObj In ThisDrawing.Groups
GroupObj.Delete
Next
End Sub '是清除,就是說只有當組中的實體數據為零時才刪除。
Sub testB()
Dim GroupObj As AcadGroup
For Each GroupObj In ThisDrawing.Groups
If GroupObj.count = 0 Then GroupObj.Delete
Next
End Sub
发表于 2004-3-12 00:12 | 显示全部楼层
不错~~好程序!
发表于 2007-12-25 10:11 | 显示全部楼层
顶啊,可以给图纸减肥哦,厉害@
发表于 2010-6-9 16:59 | 显示全部楼层

 很感谢楼主分享,多谢了.

发表于 2010-6-15 10:18 | 显示全部楼层

感觉在实际应用中,只包含一个图元的组也没多大用处,可作为空组处理。

不知楼主能否增加这个选项。

发表于 2013-6-28 19:05 | 显示全部楼层
谢谢楼主!又学一招。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-2 06:13 , Processed in 0.312212 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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