找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 5086|回复: 36

[试用]:发个清理无用组的东东(VBA)

[复制链接]
发表于 2005-4-17 22:04:56 | 显示全部楼层 |阅读模式

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

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

×
不包含任何图元的组留在CAD文档中占用了不少资源,尤其是反复编辑的图形。。
本人习惯用lisp加载VBA.。看下附件中的lisp文件救治道用法了。。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-4-18 18:30:45 | 显示全部楼层
楼主里面的后缀名不是。lsp的文件怎么加载
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-18 20:51:55 | 显示全部楼层
这个程序是用VBA写的,压缩包里有个Clear_grp.lsp文件,
打开,然后改一下"clear_grp.dvb"所在的目录。加载lisp就可以了。适用于ACAD2005。
键入 “clg”就可以运行了。完了 "clear_grp.dvb"会被卸载。不会留在内存里。只有很小的Clear_grp.lsp会留下。。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2005-5-14 21:41:30 | 显示全部楼层
谢谢楼主的东东,希望理正能加入和这个类似的清理无用组的程序。因为理正的很多对象都是用组存在的,而别人如果不用理正的话,就会删除组,这样组的信息仍然留存在了CAD文件中。希望QUN能加入清理无用组的程序。谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2005-5-16 22:42:22 | 显示全部楼层
昨天打开一张地形图,6M多。一使用Group命令AutoCAD就死掉。初步判断是图中的组太多了。用用楼主的清除空组程序试试,一样的死法。想来是对话框创建列表时出问题了,几百条可以忍受,但几十万个组下来,标准Group命令都死翘翘了,不要说你的这个程序。其中绝大部分是空组。

最后,只好自己动手写清除空组的命令行版本的程序,不要对话框了。大概运行了二十分钟有的吧,清除了几十万个空组。清完后保存DWG,原来6M的文件变成了1M。

  1. (vl-load-com)

  2. (defun C:PurgeGroup (/ gnList doc groups g)
  3.   (princ
  4.     "\n此程序搜索不包含任何物体的空组并清除之\n"
  5.   )
  6.   (setq doc (vla-get-activedocument (vlax-get-acad-object)))
  7.   (setq groups (vla-get-groups doc))
  8.   (vlax-for g groups
  9.     (princ "\n分析组:")
  10.     (princ (vla-get-name g))
  11.     (if        (= (vla-get-count g) 0)
  12.       (progn
  13.         (princ (strcat "......删除空组" (vla-get-name g)))
  14.         (vla-delete g)
  15.       )
  16.     )
  17.     (princ)
  18.   )
  19. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2005-5-19 20:05:41 | 显示全部楼层
忽然想到,只包含一个物体的组也是没有意义的,是不是也应该清理掉?

修改一下:上面的PurgeGroup.lsp中的那行:
  1. (if (= (vla-get-count g) 0)
复制代码

改为
  1. (if (< (vla-get-count g) 2)
复制代码

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

使用道具 举报

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

使用道具 举报

发表于 2005-6-6 11:29:26 | 显示全部楼层
这两天我也正为这个发愁。
请教各位高手,我的一张总图在清理重线和清理图元的时候,就自动跳出来了。怎么办?还是方案的初期,画到后面会更大,图层更多了,就怕画到画到就突然了跳出来了。
在分解一个块的时候也自动跳出来了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-6-15 23:34:48 | 显示全部楼层
我试用了这几周觉得这个程序已经非常完善了,若秋枫大侠不介意理正完全可以加入这个有用的东东!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

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

使用道具 举报

发表于 2005-6-21 20:35:16 | 显示全部楼层
最初由 eachy 发布
[B]还可以用更高效率的代码,49999个组 9.x 秒 [/B]


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

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2005-6-22 00:04:20 | 显示全部楼层
打印信息是为了测试用的

  1. ;;程序开始
  2. (setq s              (getvar "date")
  3.       seconds (* 86400.0 (- s (fix s)))
  4. )
  5. ;;程序结束
  6. (princ "耗时 ")
  7. (princ
  8.   (- (* 86400.0 (- (getvar "date") (fix (getvar "date"))))
  9.      seconds
  10.   )
  11. )
  12. (princ " s!")
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 01:41 , Processed in 0.310422 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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