马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
以前用 vla 方法写过,今天用 Lisp 又试写了一遍。Vla 方法删除空组程序到理正建筑论坛搜索

- ;;删除空组及实体数量为1的组
- (defun c:DelNullgrp (/ grp gr el gl)
- (if (and (setq el (dictsearch (namedobjdict) "ACAD_GROUP"))
- (setq grp (assoc 3 el))
- )
- (progn
- (setq el (cdr (member grp el)))
- (while el
- (if (and (setq gl (entget (setq gr (cdar el))))
- (< (length (member (assoc 340 gl) gl)) 2)
- )
- (entdel gr)
- (setq el (cddr el))
- ) ;_if
- ) ;_while
- ) ;_progn
- ) ;_if
- (princ)
- )
- ;;删除所有匿名组
- (defun c:Delunnamegrp (/ el n grp)
- (if (and (setq el (dictsearch (namedobjdict) "ACAD_GROUP"))
- (setq grp (assoc 3 el))
- )
- (progn
- (setq el (member grp el))
- (while (setq n (car el))
- (if (= (substr (cdr n) 1 1) "*")
- (entdel (cdadr el))
- ) ;_if
- (setq el (cddr el))
- ) ;_while
- ) ;_progn
- ) ;_if
- (princ)
- )
- ;;删除所有组
- (defun c:DelAllGrp (/ grp el)
- (if (and (setq el (dictsearch (namedobjdict) "ACAD_GROUP"))
- (setq grp (assoc 3 el))
- )
- (progn
- (setq el (cdr (member grp el)))
- (while el
- (entdel (cdar el))
- (setq el (cddr el))
- ) ;_while
- ) ;_progn
- ) ;_if
- (princ)
- )
和 vl-remove 功能一样的 Lisp 实现

- (defun vll-remove (A L /)
- (apply 'append
- (mapcar '(lambda (x)
- (if (not (equal x A))
- (list x)
- )
- )
- L
- )
- )
- )
|