;;;---------------purgegroups------------------------------------- ;;; Purpose: Purge groups which contain zero or at most one entity ;;; Usage: AutoCAD 2000 & up ;;; Written by Herman Mayfarth ;;; no warranty, express or implied. use at your own risk. ;;; Date this file: 19 April 2003 ;;; This function is extracted from the file Purgegroups.lsp on ;;; the utilities page of this site. Please see acknowledgements ;;; in that file. ;;; Many people have written very similar functions to this one ;;; This is not rocket science, or even if it were, it would be ;;; "elementary" rocket science ;;;--------------------------------------------------------------- ;;pass a non-nil argument to delete one-entity groups ;;pass any nil value to delete only null groups (defun purgegroups1 (one / count i num groups) (vl-load-com) ;;get groups collection of current document (setq groups (vla-get-groups (vla-get-activedocument (vlax-get-acad-object))) count (vla-get-count groups);# of groups in dwg i 0 ;loop counter ) (if one (setq num 1);purge one entity & null groups (setq num 0);purge only null groups ) (while (< i (vla-get-count groups));vla-get-count is updated on delete! (if (<= (vla-get-count (vla-item groups i)) num) (vla-delete (vla-item groups i)) (setq i (1+ i));so increment only if no deletion occurs ) ) (- count (vla-get-count groups));return # groups deleted );purgegroups1 ;;but we can do this by a more "pure" active x way, using (vlax-for) (defun purgegroups (one / count num groups) (vl-load-com) ;;get groups collection of current document (setq groups (vla-get-groups (vla-get-activedocument (vlax-get-acad-object))) count (vla-get-count groups);# of groups in dwg ) (if one (setq num 1);purge one entity & null groups (setq num 0);purge only null groups ) (vlax-for group groups (if (<= (vla-get-count group) num) (vla-delete group) ) ) (- count (vla-get-count groups));return # groups deleted );purgegroups