找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2039|回复: 5

[LISP程序]:删除空组及单实体组/删除所有组/删匿名组

[复制链接]

已领礼包: 593个

财富等级: 财运亨通

发表于 2005-10-2 00:20:40 | 显示全部楼层 |阅读模式

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

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

×
以前用 vla 方法写过,今天用 Lisp 又试写了一遍。Vla 方法删除空组程序到理正建筑论坛搜索

  1. ;;删除空组及实体数量为1的组
  2. (defun c:DelNullgrp (/ grp gr el gl)
  3.   (if (and (setq el (dictsearch (namedobjdict) "ACAD_GROUP"))
  4.            (setq grp (assoc 3 el))
  5.       )
  6.     (progn
  7.       (setq el (cdr (member grp el)))
  8.       (while el
  9.         (if (and (setq gl (entget (setq gr (cdar el))))
  10.                  (< (length (member (assoc 340 gl) gl)) 2)
  11.             )
  12.           (entdel gr)
  13.           (setq el (cddr el))
  14.         ) ;_if
  15.       ) ;_while
  16.     ) ;_progn
  17.   ) ;_if
  18.   (princ)
  19. )
  20. ;;删除所有匿名组
  21. (defun c:Delunnamegrp (/ el n grp)
  22.   (if (and (setq el (dictsearch (namedobjdict) "ACAD_GROUP"))
  23.            (setq grp (assoc 3 el))
  24.       )
  25.     (progn
  26.       (setq el (member grp el))
  27.       (while (setq n (car el))
  28.         (if (= (substr (cdr n) 1 1) "*")
  29.           (entdel (cdadr el))
  30.         ) ;_if
  31.         (setq el (cddr el))
  32.       ) ;_while
  33.     ) ;_progn
  34.   ) ;_if
  35.   (princ)
  36. )
  37. ;;删除所有组
  38. (defun c:DelAllGrp (/ grp el)
  39.   (if (and (setq el (dictsearch (namedobjdict) "ACAD_GROUP"))
  40.            (setq grp (assoc 3 el))
  41.       )
  42.     (progn
  43.       (setq el (cdr (member grp el)))
  44.       (while el
  45.         (entdel (cdar el))
  46.         (setq el (cddr el))
  47.       ) ;_while
  48.     ) ;_progn
  49.   ) ;_if
  50.   (princ)
  51. )

和 vl-remove 功能一样的 Lisp 实现

  1. (defun vll-remove (A L /)
  2.   (apply 'append
  3.          (mapcar '(lambda (x)
  4.                     (if        (not (equal x A))
  5.                       (list x)
  6.                     )
  7.                   )
  8.                  L
  9.          )
  10.   )
  11. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-10-2 02:01:49 | 显示全部楼层

  1.   [FONT=courier new]
  2. ;; 删除空组.---by 狂刀.2005.10
  3. (defun c:gpclr (/ lst)
  4.   (setq *grp (vla-get-groups (vla-get-activedocument(vlax-get-acad-object))))
  5.   (vlax-for x *grp (if (= 0 (vla-get-count x))
  6.                      (progn (setq lst(cons (vla-get-name x) lst))
  7.                        (vla-delete x))
  8.                      )
  9.     )
  10. (print "\n 已经删除空组:")
  11. (reverse lst)
  12. )
  13.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2014-12-11 12:53:27 | 显示全部楼层

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-18 21:12 , Processed in 0.341393 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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