我自己的
几乎适用各种情况吧
- ;999公共函数
- ;;选择集转为图元列表
- (defun ss2list ( ss / n i elist )
- (cond
- ((null ss) NIL)
- ((and (= (type ss) 'Pickset) (null (sslength ss)))
- NIL
- )
- ((= (type ss) 'Pickset)
- (setq n (sslength ss)
- i n
- elist '()
- )
- (repeat n
- (setq i (1- i))
- ;;如果没有这个if,那么选择集中被删除的图元,也会被加入到列表之中————但是极其偶尔也有可能,图元不存在但是能entget(遇到过一次,原因不明,或许是CAD的BUG)
- (if (entget (ssname ss i))
- (setq elist (cons (ssname ss i) elist))
- )
- )
- elist
- )
- ((= (type ss) 'ename)
- (list ss)
- )
- ((= (type ss) 'list)
- (vl-remove-if-not ''((x) (and (= (type x) 'ename) (entget x))) ss)
- )
- ( T NIL )
- )
- )
|