caoyin发表于2007-3-4 10:07:00 我用的方法有两种,一种是反应器,一种是entnext,下面的是entnext方法;;____________________________________________________________________________________________________;; 〓
谢谢caoyin的指点,用entnext函数得下一个实体的方法,这确实是个好方法,还可以再改进一下,只返回主图元的选择集或主图元名,一般我们不对子实体进行处理,如果需要,可以通过主实体找到子实体,下面是我改了一下,加了main参数,main为T时,返回主实体,main为nil时返回全部实体.再次谢谢!!! (defun lt:sslast (ent mod main / enlst ss n) (vl-load-com) (while ent (setq ent (entnext ent)) (if (and ent (not (vlax-erased-p ent))) (cond ((and main (not (MEMBER (CDR (ASSOC 0 (ENTGET ent))) (quote ("ATTRIB" "VERTEX" "SEQEND"))))) (setq enlst (cons ent enlst))) ((not main) (setq enlst (cons ent enlst))) ) ) ) (if enlst (if mod (progn (setq ss (ssadd) n (length enlst)) (repeat n (setq ent (nth (setq n (1- n)) enlst)) (ssadd ent ss)) ss ) enlst ) ) ) |